Skip to content

Instantly share code, notes, and snippets.

@CapsAdmin
Created June 23, 2018 08:54
Show Gist options
  • Save CapsAdmin/f89f540d601855b564f503952856ca04 to your computer and use it in GitHub Desktop.
Save CapsAdmin/f89f540d601855b564f503952856ca04 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
package.preload.luajit = function(...) local ffi = require("ffi")
ffi.cdef([[struct lua_State {};
struct lua_Debug {int event;const char*name;const char*namewhat;const char*what;const char*source;int currentline;int nups;int linedefined;int lastlinedefined;char short_src[60];int i_ci;};
struct luaL_Reg {const char*name;int(*func)(struct lua_State*);};
struct luaL_Buffer {char*p;int lvl;struct lua_State*L;};
void(luaL_buffinit)(struct lua_State*,struct luaL_Buffer*);
void(lua_setfield)(struct lua_State*,int,const char*);
double(luaL_optnumber)(struct lua_State*,int,double);
void(lua_xmove)(struct lua_State*,struct lua_State*,int);
void(luaL_pushresult)(struct luaL_Buffer*);
struct lua_State*(lua_newstate)(void*(*f)(void*,void*,unsigned long,unsigned long),void*);
void(luaL_addstring)(struct luaL_Buffer*,const char*);
int(lua_cpcall)(struct lua_State*,int(*func)(struct lua_State*),void*);
int(lua_status)(struct lua_State*);
void(lua_pushboolean)(struct lua_State*,int);
int(luaL_loadbuffer)(struct lua_State*,const char*,unsigned long,const char*);
void(lua_replace)(struct lua_State*,int);
const char*(lua_pushfstring)(struct lua_State*,const char*,...);
char*(luaL_prepbuffer)(struct luaL_Buffer*);
void(luaL_setmetatable)(struct lua_State*,const char*);
const char*(lua_getlocal)(struct lua_State*,const struct lua_Debug*,int);
void(luaL_checktype)(struct lua_State*,int,int);
void(luaL_pushmodule)(struct lua_State*,const char*,int);
int(lua_gettop)(struct lua_State*);
void(lua_remove)(struct lua_State*,int);
void(luaL_unref)(struct lua_State*,int,int);
int(lua_sethook)(struct lua_State*,void(*func)(struct lua_State*,struct lua_Debug*),int,int);
void(luaL_traceback)(struct lua_State*,struct lua_State*,const char*,int);
struct lua_State*(lua_tothread)(struct lua_State*,int);
int(luaL_loadfilex)(struct lua_State*,const char*,const char*);
int(luaL_ref)(struct lua_State*,int);
void(lua_setallocf)(struct lua_State*,void*(*f)(void*,void*,unsigned long,unsigned long),void*);
int(luaL_callmeta)(struct lua_State*,int,const char*);
int(luaL_execresult)(struct lua_State*,int);
int(lua_gethookmask)(struct lua_State*);
int(luaL_loadstring)(struct lua_State*,const char*);
void(lua_pushnumber)(struct lua_State*,double);
double(luaL_checknumber)(struct lua_State*,int);
void(lua_pushvalue)(struct lua_State*,int);
int(lua_resume)(struct lua_State*,int);
void(lua_pushlstring)(struct lua_State*,const char*,unsigned long);
const char*(luaL_gsub)(struct lua_State*,const char*,const char*,const char*);
void(lua_close)(struct lua_State*);
int(lua_checkstack)(struct lua_State*,int);
int(luaopen_table)(struct lua_State*);
int(luaL_error)(struct lua_State*,const char*,...);
void(luaL_where)(struct lua_State*,int);
long(luaL_optinteger)(struct lua_State*,int,long);
int(luaopen_debug)(struct lua_State*);
int(lua_dump)(struct lua_State*,int(*writer)(struct lua_State*,const void*,unsigned long,void*),void*);
void(*lua_gethook(struct lua_State*))(struct lua_State*,struct lua_Debug*);
void(luaL_checkany)(struct lua_State*,int);
void*(luaL_testudata)(struct lua_State*,int,const char*);
long(lua_tointegerx)(struct lua_State*,int,int*);
int(lua_type)(struct lua_State*,int);
int(lua_setmetatable)(struct lua_State*,int);
void(luaL_checkstack)(struct lua_State*,int,const char*);
void(lua_rawseti)(struct lua_State*,int,int);
const char*(lua_setlocal)(struct lua_State*,const struct lua_Debug*,int);
long(luaL_checkinteger)(struct lua_State*,int);
const char*(luaL_optlstring)(struct lua_State*,int,const char*,unsigned long*);
int(lua_isstring)(struct lua_State*,int);
double(lua_tonumberx)(struct lua_State*,int,int*);
void(lua_setlevel)(struct lua_State*,struct lua_State*);
int(luaL_typerror)(struct lua_State*,int,const char*);
const char*(luaL_findtable)(struct lua_State*,int,const char*,int);
int(luaL_getmetafield)(struct lua_State*,int,const char*);
void(luaL_register)(struct lua_State*,const char*,const struct luaL_Reg*);
void(lua_pushstring)(struct lua_State*,const char*);
struct lua_State*(luaL_newstate)();
void(lua_rawset)(struct lua_State*,int);
void(lua_pushcclosure)(struct lua_State*,int(*fn)(struct lua_State*),int);
int(lua_loadx)(struct lua_State*,const char*(*reader)(struct lua_State*,void*,unsigned long*),void*,const char*,const char*);
void(luaL_addlstring)(struct luaL_Buffer*,const char*,unsigned long);
int(luaL_loadbufferx)(struct lua_State*,const char*,unsigned long,const char*,const char*);
unsigned long(lua_objlen)(struct lua_State*,int);
int(lua_gc)(struct lua_State*,int,int);
int(*lua_atpanic(struct lua_State*,int(*panicf)(struct lua_State*)))(struct lua_State*);
int(luaL_argerror)(struct lua_State*,int,const char*);
const char*(lua_typename)(struct lua_State*,int);
int(luaL_loadfile)(struct lua_State*,const char*);
int(luaopen_io)(struct lua_State*);
void(lua_createtable)(struct lua_State*,int,int);
void*(lua_newuserdata)(struct lua_State*,unsigned long);
int(lua_pcall)(struct lua_State*,int,int,int);
int(lua_lessthan)(struct lua_State*,int,int);
int(lua_pushthread)(struct lua_State*);
const void*(lua_topointer)(struct lua_State*,int);
int(lua_error)(struct lua_State*);
int(lua_isyieldable)(struct lua_State*);
int(luaopen_package)(struct lua_State*);
int(lua_rawequal)(struct lua_State*,int,int);
const double*(lua_version)(struct lua_State*);
const char*(lua_getupvalue)(struct lua_State*,int,int);
void*(luaL_checkudata)(struct lua_State*,int,const char*);
void(lua_rawget)(struct lua_State*,int);
void(lua_pushnil)(struct lua_State*);
void(luaL_openlibs)(struct lua_State*);
const char*(lua_pushvfstring)(struct lua_State*,const char*,__builtin_va_list);
void(lua_rawgeti)(struct lua_State*,int,int);
int(lua_toboolean)(struct lua_State*,int);
void(lua_concat)(struct lua_State*,int);
int(lua_getmetatable)(struct lua_State*,int);
struct lua_State*(lua_newthread)(struct lua_State*);
void(luaL_setfuncs)(struct lua_State*,const struct luaL_Reg*,int);
int(lua_yield)(struct lua_State*,int);
void*(lua_upvalueid)(struct lua_State*,int,int);
void*(lua_touserdata)(struct lua_State*,int);
void(luaL_addvalue)(struct luaL_Buffer*);
void(lua_settop)(struct lua_State*,int);
int(luaopen_jit)(struct lua_State*);
void(lua_getfenv)(struct lua_State*,int);
long(lua_tointeger)(struct lua_State*,int);
const char*(lua_tolstring)(struct lua_State*,int,unsigned long*);
void(lua_insert)(struct lua_State*,int);
void(lua_call)(struct lua_State*,int,int);
int(lua_iscfunction)(struct lua_State*,int);
void(luaL_openlib)(struct lua_State*,const char*,const struct luaL_Reg*,int);
int(luaopen_ffi)(struct lua_State*);
const char*(luaL_checklstring)(struct lua_State*,int,unsigned long*);
int(luaopen_bit)(struct lua_State*);
int(lua_isnumber)(struct lua_State*,int);
void(lua_upvaluejoin)(struct lua_State*,int,int,int,int);
void(lua_pushinteger)(struct lua_State*,long);
void(lua_pushlightuserdata)(struct lua_State*,void*);
int(lua_gethookcount)(struct lua_State*);
void(lua_getfield)(struct lua_State*,int,const char*);
void*(*lua_getallocf(struct lua_State*,void**))(void*,void*,unsigned long,unsigned long);
int(lua_next)(struct lua_State*,int);
const char*(lua_setupvalue)(struct lua_State*,int,int);
int(luaL_newmetatable)(struct lua_State*,const char*);
int(luaL_fileresult)(struct lua_State*,int,const char*);
void(lua_copy)(struct lua_State*,int,int);
int(lua_load)(struct lua_State*,const char*(*reader)(struct lua_State*,void*,unsigned long*),void*,const char*);
int(lua_isuserdata)(struct lua_State*,int);
int(*lua_tocfunction(struct lua_State*,int))(struct lua_State*);
int(luaL_checkoption)(struct lua_State*,int,const char*,const char*const lst);
int(luaopen_math)(struct lua_State*);
int(luaopen_base)(struct lua_State*);
int(luaopen_string)(struct lua_State*);
int(luaopen_os)(struct lua_State*);
void(lua_settable)(struct lua_State*,int);
int(lua_setfenv)(struct lua_State*,int);
int(lua_getstack)(struct lua_State*,int,struct lua_Debug*);
void(lua_gettable)(struct lua_State*,int);
int(lua_getinfo)(struct lua_State*,const char*,struct lua_Debug*);
double(lua_tonumber)(struct lua_State*,int);
int(lua_equal)(struct lua_State*,int,int);
]])
local CLIB = ffi.C
local library = {}
library = {
setfield = CLIB.lua_setfield,
xmove = CLIB.lua_xmove,
newstate = CLIB.lua_newstate,
cpcall = CLIB.lua_cpcall,
status = CLIB.lua_status,
pushboolean = CLIB.lua_pushboolean,
replace = CLIB.lua_replace,
pushfstring = CLIB.lua_pushfstring,
getlocal = CLIB.lua_getlocal,
gettop = CLIB.lua_gettop,
remove = CLIB.lua_remove,
sethook = CLIB.lua_sethook,
tothread = CLIB.lua_tothread,
setallocf = CLIB.lua_setallocf,
gethookmask = CLIB.lua_gethookmask,
pushnumber = CLIB.lua_pushnumber,
pushvalue = CLIB.lua_pushvalue,
resume = CLIB.lua_resume,
pushlstring = CLIB.lua_pushlstring,
close = CLIB.lua_close,
checkstack = CLIB.lua_checkstack,
dump = CLIB.lua_dump,
gethook = CLIB.lua_gethook,
tointegerx = CLIB.lua_tointegerx,
type = CLIB.lua_type,
setmetatable = CLIB.lua_setmetatable,
rawseti = CLIB.lua_rawseti,
setlocal = CLIB.lua_setlocal,
isstring = CLIB.lua_isstring,
tonumberx = CLIB.lua_tonumberx,
--setlevel = CLIB.lua_setlevel,
pushstring = CLIB.lua_pushstring,
rawset = CLIB.lua_rawset,
pushcclosure = CLIB.lua_pushcclosure,
loadx = CLIB.lua_loadx,
objlen = CLIB.lua_objlen,
gc = CLIB.lua_gc,
atpanic = CLIB.lua_atpanic,
typename = CLIB.lua_typename,
createtable = CLIB.lua_createtable,
newuserdata = CLIB.lua_newuserdata,
pcall = CLIB.lua_pcall,
lessthan = CLIB.lua_lessthan,
pushthread = CLIB.lua_pushthread,
topointer = CLIB.lua_topointer,
error = CLIB.lua_error,
isyieldable = CLIB.lua_isyieldable,
rawequal = CLIB.lua_rawequal,
version = CLIB.lua_version,
getupvalue = CLIB.lua_getupvalue,
rawget = CLIB.lua_rawget,
pushnil = CLIB.lua_pushnil,
pushvfstring = CLIB.lua_pushvfstring,
rawgeti = CLIB.lua_rawgeti,
toboolean = CLIB.lua_toboolean,
concat = CLIB.lua_concat,
getmetatable = CLIB.lua_getmetatable,
newthread = CLIB.lua_newthread,
yield = CLIB.lua_yield,
upvalueid = CLIB.lua_upvalueid,
touserdata = CLIB.lua_touserdata,
settop = CLIB.lua_settop,
getfenv = CLIB.lua_getfenv,
tointeger = CLIB.lua_tointeger,
tolstring = CLIB.lua_tolstring,
insert = CLIB.lua_insert,
call = CLIB.lua_call,
iscfunction = CLIB.lua_iscfunction,
isnumber = CLIB.lua_isnumber,
upvaluejoin = CLIB.lua_upvaluejoin,
pushinteger = CLIB.lua_pushinteger,
pushlightuserdata = CLIB.lua_pushlightuserdata,
gethookcount = CLIB.lua_gethookcount,
getfield = CLIB.lua_getfield,
getallocf = CLIB.lua_getallocf,
next = CLIB.lua_next,
setupvalue = CLIB.lua_setupvalue,
copy = CLIB.lua_copy,
load = CLIB.lua_load,
isuserdata = CLIB.lua_isuserdata,
tocfunction = CLIB.lua_tocfunction,
settable = CLIB.lua_settable,
setfenv = CLIB.lua_setfenv,
getstack = CLIB.lua_getstack,
gettable = CLIB.lua_gettable,
getinfo = CLIB.lua_getinfo,
tonumber = CLIB.lua_tonumber,
equal = CLIB.lua_equal,
}
library.L = {
buffinit = CLIB.luaL_buffinit,
optnumber = CLIB.luaL_optnumber,
pushresult = CLIB.luaL_pushresult,
addstring = CLIB.luaL_addstring,
loadbuffer = CLIB.luaL_loadbuffer,
prepbuffer = CLIB.luaL_prepbuffer,
setmetatable = CLIB.luaL_setmetatable,
checktype = CLIB.luaL_checktype,
pushmodule = CLIB.luaL_pushmodule,
unref = CLIB.luaL_unref,
traceback = CLIB.luaL_traceback,
loadfilex = CLIB.luaL_loadfilex,
ref = CLIB.luaL_ref,
callmeta = CLIB.luaL_callmeta,
execresult = CLIB.luaL_execresult,
loadstring = CLIB.luaL_loadstring,
checknumber = CLIB.luaL_checknumber,
gsub = CLIB.luaL_gsub,
error = CLIB.luaL_error,
where = CLIB.luaL_where,
optinteger = CLIB.luaL_optinteger,
checkany = CLIB.luaL_checkany,
testudata = CLIB.luaL_testudata,
checkstack = CLIB.luaL_checkstack,
checkinteger = CLIB.luaL_checkinteger,
optlstring = CLIB.luaL_optlstring,
typerror = CLIB.luaL_typerror,
findtable = CLIB.luaL_findtable,
getmetafield = CLIB.luaL_getmetafield,
register = CLIB.luaL_register,
newstate = CLIB.luaL_newstate,
addlstring = CLIB.luaL_addlstring,
loadbufferx = CLIB.luaL_loadbufferx,
argerror = CLIB.luaL_argerror,
loadfile = CLIB.luaL_loadfile,
checkudata = CLIB.luaL_checkudata,
openlibs = CLIB.luaL_openlibs,
setfuncs = CLIB.luaL_setfuncs,
addvalue = CLIB.luaL_addvalue,
openlib = CLIB.luaL_openlib,
checklstring = CLIB.luaL_checklstring,
newmetatable = CLIB.luaL_newmetatable,
fileresult = CLIB.luaL_fileresult,
checkoption = CLIB.luaL_checkoption,
}
library.e = {
}
library.clib = CLIB
return library
end package.preload.SDL2 = function(...) local ffi = require("ffi")
ffi.cdef([[enum{SDL_PIXELTYPE_UNKNOWN=0,SDL_PIXELTYPE_INDEX1=1,SDL_PIXELTYPE_INDEX4=2,SDL_PIXELTYPE_INDEX8=3,SDL_PIXELTYPE_PACKED8=4,SDL_PIXELTYPE_PACKED16=5,SDL_PIXELTYPE_PACKED32=6,SDL_PIXELTYPE_ARRAYU8=7,SDL_PIXELTYPE_ARRAYU16=8,SDL_PIXELTYPE_ARRAYU32=9,SDL_PIXELTYPE_ARRAYF16=10,SDL_PIXELTYPE_ARRAYF32=11,
SDL_BITMAPORDER_NONE=0,SDL_BITMAPORDER_4321=1,SDL_BITMAPORDER_1234=2,
SDL_PACKEDORDER_NONE=0,SDL_PACKEDORDER_XRGB=1,SDL_PACKEDORDER_RGBX=2,SDL_PACKEDORDER_ARGB=3,SDL_PACKEDORDER_RGBA=4,SDL_PACKEDORDER_XBGR=5,SDL_PACKEDORDER_BGRX=6,SDL_PACKEDORDER_ABGR=7,SDL_PACKEDORDER_BGRA=8,
SDL_ARRAYORDER_NONE=0,SDL_ARRAYORDER_RGB=1,SDL_ARRAYORDER_RGBA=2,SDL_ARRAYORDER_ARGB=3,SDL_ARRAYORDER_BGR=4,SDL_ARRAYORDER_BGRA=5,SDL_ARRAYORDER_ABGR=6,
SDL_PACKEDLAYOUT_NONE=0,SDL_PACKEDLAYOUT_332=1,SDL_PACKEDLAYOUT_4444=2,SDL_PACKEDLAYOUT_1555=3,SDL_PACKEDLAYOUT_5551=4,SDL_PACKEDLAYOUT_565=5,SDL_PACKEDLAYOUT_8888=6,SDL_PACKEDLAYOUT_2101010=7,SDL_PACKEDLAYOUT_1010102=8,
SDL_PIXELFORMAT_UNKNOWN=0,SDL_PIXELFORMAT_INDEX1LSB=286261504,SDL_PIXELFORMAT_INDEX1MSB=287310080,SDL_PIXELFORMAT_INDEX4LSB=303039488,SDL_PIXELFORMAT_INDEX4MSB=304088064,SDL_PIXELFORMAT_INDEX8=318769153,SDL_PIXELFORMAT_RGB332=336660481,SDL_PIXELFORMAT_RGB444=353504258,SDL_PIXELFORMAT_RGB555=353570562,SDL_PIXELFORMAT_BGR555=357764866,SDL_PIXELFORMAT_ARGB4444=355602434,SDL_PIXELFORMAT_RGBA4444=356651010,SDL_PIXELFORMAT_ABGR4444=359796738,SDL_PIXELFORMAT_BGRA4444=360845314,SDL_PIXELFORMAT_ARGB1555=355667970,SDL_PIXELFORMAT_RGBA5551=356782082,SDL_PIXELFORMAT_ABGR1555=359862274,SDL_PIXELFORMAT_BGRA5551=360976386,SDL_PIXELFORMAT_RGB565=353701890,SDL_PIXELFORMAT_BGR565=357896194,SDL_PIXELFORMAT_RGB24=386930691,SDL_PIXELFORMAT_BGR24=390076419,SDL_PIXELFORMAT_RGB888=370546692,SDL_PIXELFORMAT_RGBX8888=371595268,SDL_PIXELFORMAT_BGR888=374740996,SDL_PIXELFORMAT_BGRX8888=375789572,SDL_PIXELFORMAT_ARGB8888=372645892,SDL_PIXELFORMAT_RGBA8888=373694468,SDL_PIXELFORMAT_ABGR8888=376840196,SDL_PIXELFORMAT_BGRA8888=377888772,SDL_PIXELFORMAT_ARGB2101010=372711428,SDL_PIXELFORMAT_RGBA32=376840196,SDL_PIXELFORMAT_ARGB32=377888772,SDL_PIXELFORMAT_BGRA32=372645892,SDL_PIXELFORMAT_ABGR32=373694468,SDL_PIXELFORMAT_YV12=842094169,SDL_PIXELFORMAT_IYUV=1448433993,SDL_PIXELFORMAT_YUY2=844715353,SDL_PIXELFORMAT_UYVY=1498831189,SDL_PIXELFORMAT_YVYU=1431918169,SDL_PIXELFORMAT_NV12=842094158,SDL_PIXELFORMAT_NV21=825382478,SDL_PIXELFORMAT_EXTERNAL_OES=542328143,
SDL_LOG_CATEGORY_APPLICATION=0,SDL_LOG_CATEGORY_ERROR=1,SDL_LOG_CATEGORY_ASSERT=2,SDL_LOG_CATEGORY_SYSTEM=3,SDL_LOG_CATEGORY_AUDIO=4,SDL_LOG_CATEGORY_VIDEO=5,SDL_LOG_CATEGORY_RENDER=6,SDL_LOG_CATEGORY_INPUT=7,SDL_LOG_CATEGORY_TEST=8,SDL_LOG_CATEGORY_RESERVED1=9,SDL_LOG_CATEGORY_RESERVED2=10,SDL_LOG_CATEGORY_RESERVED3=11,SDL_LOG_CATEGORY_RESERVED4=12,SDL_LOG_CATEGORY_RESERVED5=13,SDL_LOG_CATEGORY_RESERVED6=14,SDL_LOG_CATEGORY_RESERVED7=15,SDL_LOG_CATEGORY_RESERVED8=16,SDL_LOG_CATEGORY_RESERVED9=17,SDL_LOG_CATEGORY_RESERVED10=18,SDL_LOG_CATEGORY_CUSTOM=19,};typedef enum SDL_TextureAccess{SDL_TEXTUREACCESS_STATIC=0,SDL_TEXTUREACCESS_STREAMING=1,SDL_TEXTUREACCESS_TARGET=2};
typedef enum SDL_BlendMode{SDL_BLENDMODE_NONE=0,SDL_BLENDMODE_BLEND=1,SDL_BLENDMODE_ADD=2,SDL_BLENDMODE_MOD=4,SDL_BLENDMODE_INVALID=2147483647};
typedef enum SDL_WindowEventID{SDL_WINDOWEVENT_NONE=0,SDL_WINDOWEVENT_SHOWN=1,SDL_WINDOWEVENT_HIDDEN=2,SDL_WINDOWEVENT_EXPOSED=3,SDL_WINDOWEVENT_MOVED=4,SDL_WINDOWEVENT_RESIZED=5,SDL_WINDOWEVENT_SIZE_CHANGED=6,SDL_WINDOWEVENT_MINIMIZED=7,SDL_WINDOWEVENT_MAXIMIZED=8,SDL_WINDOWEVENT_RESTORED=9,SDL_WINDOWEVENT_ENTER=10,SDL_WINDOWEVENT_LEAVE=11,SDL_WINDOWEVENT_FOCUS_GAINED=12,SDL_WINDOWEVENT_FOCUS_LOST=13,SDL_WINDOWEVENT_CLOSE=14,SDL_WINDOWEVENT_TAKE_FOCUS=15,SDL_WINDOWEVENT_HIT_TEST=16};
typedef enum SDL_GameControllerBindType{SDL_CONTROLLER_BINDTYPE_NONE=0,SDL_CONTROLLER_BINDTYPE_BUTTON=1,SDL_CONTROLLER_BINDTYPE_AXIS=2,SDL_CONTROLLER_BINDTYPE_HAT=3};
typedef enum SDL_bool{SDL_FALSE=0,SDL_TRUE=1};
typedef enum SDL_PowerState{SDL_POWERSTATE_UNKNOWN=0,SDL_POWERSTATE_ON_BATTERY=1,SDL_POWERSTATE_NO_BATTERY=2,SDL_POWERSTATE_CHARGING=3,SDL_POWERSTATE_CHARGED=4};
typedef enum SDL_SYSWM_TYPE{SDL_SYSWM_UNKNOWN=0,SDL_SYSWM_WINDOWS=1,SDL_SYSWM_X11=2,SDL_SYSWM_DIRECTFB=3,SDL_SYSWM_COCOA=4,SDL_SYSWM_UIKIT=5,SDL_SYSWM_WAYLAND=6,SDL_SYSWM_MIR=7,SDL_SYSWM_WINRT=8,SDL_SYSWM_ANDROID=9,SDL_SYSWM_VIVANTE=10,SDL_SYSWM_OS2=11};
typedef enum SDL_Keymod{KMOD_NONE=0,KMOD_LSHIFT=1,KMOD_RSHIFT=2,KMOD_LCTRL=64,KMOD_RCTRL=128,KMOD_LALT=256,KMOD_RALT=512,KMOD_LGUI=1024,KMOD_RGUI=2048,KMOD_NUM=4096,KMOD_CAPS=8192,KMOD_MODE=16384,KMOD_RESERVED=32768};
typedef enum SDL_BlendFactor{SDL_BLENDFACTOR_ZERO=1,SDL_BLENDFACTOR_ONE=2,SDL_BLENDFACTOR_SRC_COLOR=3,SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR=4,SDL_BLENDFACTOR_SRC_ALPHA=5,SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA=6,SDL_BLENDFACTOR_DST_COLOR=7,SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR=8,SDL_BLENDFACTOR_DST_ALPHA=9,SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA=10};
typedef enum SDL_AudioStatus{SDL_AUDIO_STOPPED=0,SDL_AUDIO_PLAYING=1,SDL_AUDIO_PAUSED=2};
typedef enum SDL_GameControllerAxis{SDL_CONTROLLER_AXIS_INVALID=-1,SDL_CONTROLLER_AXIS_LEFTX=0,SDL_CONTROLLER_AXIS_LEFTY=1,SDL_CONTROLLER_AXIS_RIGHTX=2,SDL_CONTROLLER_AXIS_RIGHTY=3,SDL_CONTROLLER_AXIS_TRIGGERLEFT=4,SDL_CONTROLLER_AXIS_TRIGGERRIGHT=5,SDL_CONTROLLER_AXIS_MAX=6};
typedef enum SDL_LogPriority{SDL_LOG_PRIORITY_VERBOSE=1,SDL_LOG_PRIORITY_DEBUG=2,SDL_LOG_PRIORITY_INFO=3,SDL_LOG_PRIORITY_WARN=4,SDL_LOG_PRIORITY_ERROR=5,SDL_LOG_PRIORITY_CRITICAL=6,SDL_NUM_LOG_PRIORITIES=7};
typedef enum SDL_MessageBoxButtonFlags{SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT=1,SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT=2};
typedef enum SDL_MouseWheelDirection{SDL_MOUSEWHEEL_NORMAL=0,SDL_MOUSEWHEEL_FLIPPED=1};
typedef enum SDL_YUV_CONVERSION_MODE{SDL_YUV_CONVERSION_JPEG=0,SDL_YUV_CONVERSION_BT601=1,SDL_YUV_CONVERSION_BT709=2,SDL_YUV_CONVERSION_AUTOMATIC=3};
typedef enum SDL_RendererFlip{SDL_FLIP_NONE=0,SDL_FLIP_HORIZONTAL=1,SDL_FLIP_VERTICAL=2};
typedef enum SDL_TextureModulate{SDL_TEXTUREMODULATE_NONE=0,SDL_TEXTUREMODULATE_COLOR=1,SDL_TEXTUREMODULATE_ALPHA=2};
typedef enum SDL_RendererFlags{SDL_RENDERER_SOFTWARE=1,SDL_RENDERER_ACCELERATED=2,SDL_RENDERER_PRESENTVSYNC=4,SDL_RENDERER_TARGETTEXTURE=8};
typedef enum SDL_MessageBoxColorType{SDL_MESSAGEBOX_COLOR_BACKGROUND=0,SDL_MESSAGEBOX_COLOR_TEXT=1,SDL_MESSAGEBOX_COLOR_BUTTON_BORDER=2,SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND=3,SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED=4,SDL_MESSAGEBOX_COLOR_MAX=5};
typedef enum SDL_GLprofile{SDL_GL_CONTEXT_PROFILE_CORE=1,SDL_GL_CONTEXT_PROFILE_COMPATIBILITY=2,SDL_GL_CONTEXT_PROFILE_ES=4};
typedef enum SDL_errorcode{SDL_ENOMEM=0,SDL_EFREAD=1,SDL_EFWRITE=2,SDL_EFSEEK=3,SDL_UNSUPPORTED=4,SDL_LASTERROR=5};
typedef enum SDL_GLattr{SDL_GL_RED_SIZE=0,SDL_GL_GREEN_SIZE=1,SDL_GL_BLUE_SIZE=2,SDL_GL_ALPHA_SIZE=3,SDL_GL_BUFFER_SIZE=4,SDL_GL_DOUBLEBUFFER=5,SDL_GL_DEPTH_SIZE=6,SDL_GL_STENCIL_SIZE=7,SDL_GL_ACCUM_RED_SIZE=8,SDL_GL_ACCUM_GREEN_SIZE=9,SDL_GL_ACCUM_BLUE_SIZE=10,SDL_GL_ACCUM_ALPHA_SIZE=11,SDL_GL_STEREO=12,SDL_GL_MULTISAMPLEBUFFERS=13,SDL_GL_MULTISAMPLESAMPLES=14,SDL_GL_ACCELERATED_VISUAL=15,SDL_GL_RETAINED_BACKING=16,SDL_GL_CONTEXT_MAJOR_VERSION=17,SDL_GL_CONTEXT_MINOR_VERSION=18,SDL_GL_CONTEXT_EGL=19,SDL_GL_CONTEXT_FLAGS=20,SDL_GL_CONTEXT_PROFILE_MASK=21,SDL_GL_SHARE_WITH_CURRENT_CONTEXT=22,SDL_GL_FRAMEBUFFER_SRGB_CAPABLE=23,SDL_GL_CONTEXT_RELEASE_BEHAVIOR=24,SDL_GL_CONTEXT_RESET_NOTIFICATION=25,SDL_GL_CONTEXT_NO_ERROR=26};
typedef enum SDL_GLContextResetNotification{SDL_GL_CONTEXT_RESET_NO_NOTIFICATION=0,SDL_GL_CONTEXT_RESET_LOSE_CONTEXT=1};
typedef enum SDL_ThreadPriority{SDL_THREAD_PRIORITY_LOW=0,SDL_THREAD_PRIORITY_NORMAL=1,SDL_THREAD_PRIORITY_HIGH=2};
typedef enum SDL_grrrrrr{SDL_INIT_TIMER=1,SDL_INIT_AUDIO=16,SDL_INIT_VIDEO=32,SDL_INIT_JOYSTICK=512,SDL_INIT_HAPTIC=4096,SDL_INIT_GAMECONTROLLER=8192,SDL_INIT_EVENTS=16384,SDL_INIT_NOPARACHUTE=1048576,SDL_INIT_EVERYTHING=29233,SDL_WINDOWPOS_UNDEFINED_MASK=536805376,SDL_WINDOWPOS_UNDEFINED_DISPLAY=536805376,SDL_WINDOWPOS_UNDEFINED=536805376,SDL_WINDOWPOS_CENTERED_MASK=805240832,SDL_WINDOWPOS_CENTERED=805240832};
typedef enum SDL_HintPriority{SDL_HINT_DEFAULT=0,SDL_HINT_NORMAL=1,SDL_HINT_OVERRIDE=2};
typedef enum SDL_MessageBoxFlags{SDL_MESSAGEBOX_ERROR=16,SDL_MESSAGEBOX_WARNING=32,SDL_MESSAGEBOX_INFORMATION=64};
typedef enum SDL_eventaction{SDL_ADDEVENT=0,SDL_PEEKEVENT=1,SDL_GETEVENT=2};
typedef enum SDL_GameControllerButton{SDL_CONTROLLER_BUTTON_INVALID=-1,SDL_CONTROLLER_BUTTON_A=0,SDL_CONTROLLER_BUTTON_B=1,SDL_CONTROLLER_BUTTON_X=2,SDL_CONTROLLER_BUTTON_Y=3,SDL_CONTROLLER_BUTTON_BACK=4,SDL_CONTROLLER_BUTTON_GUIDE=5,SDL_CONTROLLER_BUTTON_START=6,SDL_CONTROLLER_BUTTON_LEFTSTICK=7,SDL_CONTROLLER_BUTTON_RIGHTSTICK=8,SDL_CONTROLLER_BUTTON_LEFTSHOULDER=9,SDL_CONTROLLER_BUTTON_RIGHTSHOULDER=10,SDL_CONTROLLER_BUTTON_DPAD_UP=11,SDL_CONTROLLER_BUTTON_DPAD_DOWN=12,SDL_CONTROLLER_BUTTON_DPAD_LEFT=13,SDL_CONTROLLER_BUTTON_DPAD_RIGHT=14,SDL_CONTROLLER_BUTTON_MAX=15};
typedef enum SDL_EventType{SDL_FIRSTEVENT=0,SDL_QUIT=256,SDL_APP_TERMINATING=257,SDL_APP_LOWMEMORY=258,SDL_APP_WILLENTERBACKGROUND=259,SDL_APP_DIDENTERBACKGROUND=260,SDL_APP_WILLENTERFOREGROUND=261,SDL_APP_DIDENTERFOREGROUND=262,SDL_WINDOWEVENT=512,SDL_SYSWMEVENT=513,SDL_KEYDOWN=768,SDL_KEYUP=769,SDL_TEXTEDITING=770,SDL_TEXTINPUT=771,SDL_KEYMAPCHANGED=772,SDL_MOUSEMOTION=1024,SDL_MOUSEBUTTONDOWN=1025,SDL_MOUSEBUTTONUP=1026,SDL_MOUSEWHEEL=1027,SDL_JOYAXISMOTION=1536,SDL_JOYBALLMOTION=1537,SDL_JOYHATMOTION=1538,SDL_JOYBUTTONDOWN=1539,SDL_JOYBUTTONUP=1540,SDL_JOYDEVICEADDED=1541,SDL_JOYDEVICEREMOVED=1542,SDL_CONTROLLERAXISMOTION=1616,SDL_CONTROLLERBUTTONDOWN=1617,SDL_CONTROLLERBUTTONUP=1618,SDL_CONTROLLERDEVICEADDED=1619,SDL_CONTROLLERDEVICEREMOVED=1620,SDL_CONTROLLERDEVICEREMAPPED=1621,SDL_FINGERDOWN=1792,SDL_FINGERUP=1793,SDL_FINGERMOTION=1794,SDL_DOLLARGESTURE=2048,SDL_DOLLARRECORD=2049,SDL_MULTIGESTURE=2050,SDL_CLIPBOARDUPDATE=2304,SDL_DROPFILE=4096,SDL_DROPTEXT=4097,SDL_DROPBEGIN=4098,SDL_DROPCOMPLETE=4099,SDL_AUDIODEVICEADDED=4352,SDL_AUDIODEVICEREMOVED=4353,SDL_RENDER_TARGETS_RESET=8192,SDL_RENDER_DEVICE_RESET=8193,SDL_USEREVENT=32768,SDL_LASTEVENT=65535};
typedef enum SDL_AssertState{SDL_ASSERTION_RETRY=0,SDL_ASSERTION_BREAK=1,SDL_ASSERTION_ABORT=2,SDL_ASSERTION_IGNORE=3,SDL_ASSERTION_ALWAYS_IGNORE=4};
typedef enum SDL_GLcontextFlag{SDL_GL_CONTEXT_DEBUG_FLAG=1,SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG=2,SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG=4,SDL_GL_CONTEXT_RESET_ISOLATION_FLAG=8};
typedef enum SDL_GLcontextReleaseFlag{SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE=0,SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH=1};
typedef enum SDL_SystemCursor{SDL_SYSTEM_CURSOR_ARROW=0,SDL_SYSTEM_CURSOR_IBEAM=1,SDL_SYSTEM_CURSOR_WAIT=2,SDL_SYSTEM_CURSOR_CROSSHAIR=3,SDL_SYSTEM_CURSOR_WAITARROW=4,SDL_SYSTEM_CURSOR_SIZENWSE=5,SDL_SYSTEM_CURSOR_SIZENESW=6,SDL_SYSTEM_CURSOR_SIZEWE=7,SDL_SYSTEM_CURSOR_SIZENS=8,SDL_SYSTEM_CURSOR_SIZEALL=9,SDL_SYSTEM_CURSOR_NO=10,SDL_SYSTEM_CURSOR_HAND=11,SDL_NUM_SYSTEM_CURSORS=12};
typedef enum SDL_WindowFlags{SDL_WINDOW_FULLSCREEN=1,SDL_WINDOW_OPENGL=2,SDL_WINDOW_SHOWN=4,SDL_WINDOW_HIDDEN=8,SDL_WINDOW_BORDERLESS=16,SDL_WINDOW_RESIZABLE=32,SDL_WINDOW_MINIMIZED=64,SDL_WINDOW_MAXIMIZED=128,SDL_WINDOW_INPUT_GRABBED=256,SDL_WINDOW_INPUT_FOCUS=512,SDL_WINDOW_MOUSE_FOCUS=1024,SDL_WINDOW_FULLSCREEN_DESKTOP=4097,SDL_WINDOW_FOREIGN=2048,SDL_WINDOW_ALLOW_HIGHDPI=8192,SDL_WINDOW_MOUSE_CAPTURE=16384,SDL_WINDOW_ALWAYS_ON_TOP=32768,SDL_WINDOW_SKIP_TASKBAR=65536,SDL_WINDOW_UTILITY=131072,SDL_WINDOW_TOOLTIP=262144,SDL_WINDOW_POPUP_MENU=524288,SDL_WINDOW_VULKAN=268435456};
typedef enum SDL_JoystickPowerLevel{SDL_JOYSTICK_POWER_UNKNOWN=-1,SDL_JOYSTICK_POWER_EMPTY=0,SDL_JOYSTICK_POWER_LOW=1,SDL_JOYSTICK_POWER_MEDIUM=2,SDL_JOYSTICK_POWER_FULL=3,SDL_JOYSTICK_POWER_WIRED=4,SDL_JOYSTICK_POWER_MAX=5};
typedef enum SDL_HitTestResult{SDL_HITTEST_NORMAL=0,SDL_HITTEST_DRAGGABLE=1,SDL_HITTEST_RESIZE_TOPLEFT=2,SDL_HITTEST_RESIZE_TOP=3,SDL_HITTEST_RESIZE_TOPRIGHT=4,SDL_HITTEST_RESIZE_RIGHT=5,SDL_HITTEST_RESIZE_BOTTOMRIGHT=6,SDL_HITTEST_RESIZE_BOTTOM=7,SDL_HITTEST_RESIZE_BOTTOMLEFT=8,SDL_HITTEST_RESIZE_LEFT=9};
typedef enum SDL_Scancode{SDL_SCANCODE_UNKNOWN=0,SDL_SCANCODE_A=4,SDL_SCANCODE_B=5,SDL_SCANCODE_C=6,SDL_SCANCODE_D=7,SDL_SCANCODE_E=8,SDL_SCANCODE_F=9,SDL_SCANCODE_G=10,SDL_SCANCODE_H=11,SDL_SCANCODE_I=12,SDL_SCANCODE_J=13,SDL_SCANCODE_K=14,SDL_SCANCODE_L=15,SDL_SCANCODE_M=16,SDL_SCANCODE_N=17,SDL_SCANCODE_O=18,SDL_SCANCODE_P=19,SDL_SCANCODE_Q=20,SDL_SCANCODE_R=21,SDL_SCANCODE_S=22,SDL_SCANCODE_T=23,SDL_SCANCODE_U=24,SDL_SCANCODE_V=25,SDL_SCANCODE_W=26,SDL_SCANCODE_X=27,SDL_SCANCODE_Y=28,SDL_SCANCODE_Z=29,SDL_SCANCODE_1=30,SDL_SCANCODE_2=31,SDL_SCANCODE_3=32,SDL_SCANCODE_4=33,SDL_SCANCODE_5=34,SDL_SCANCODE_6=35,SDL_SCANCODE_7=36,SDL_SCANCODE_8=37,SDL_SCANCODE_9=38,SDL_SCANCODE_0=39,SDL_SCANCODE_RETURN=40,SDL_SCANCODE_ESCAPE=41,SDL_SCANCODE_BACKSPACE=42,SDL_SCANCODE_TAB=43,SDL_SCANCODE_SPACE=44,SDL_SCANCODE_MINUS=45,SDL_SCANCODE_EQUALS=46,SDL_SCANCODE_LEFTBRACKET=47,SDL_SCANCODE_RIGHTBRACKET=48,SDL_SCANCODE_BACKSLASH=49,SDL_SCANCODE_NONUSHASH=50,SDL_SCANCODE_SEMICOLON=51,SDL_SCANCODE_APOSTROPHE=52,SDL_SCANCODE_GRAVE=53,SDL_SCANCODE_COMMA=54,SDL_SCANCODE_PERIOD=55,SDL_SCANCODE_SLASH=56,SDL_SCANCODE_CAPSLOCK=57,SDL_SCANCODE_F1=58,SDL_SCANCODE_F2=59,SDL_SCANCODE_F3=60,SDL_SCANCODE_F4=61,SDL_SCANCODE_F5=62,SDL_SCANCODE_F6=63,SDL_SCANCODE_F7=64,SDL_SCANCODE_F8=65,SDL_SCANCODE_F9=66,SDL_SCANCODE_F10=67,SDL_SCANCODE_F11=68,SDL_SCANCODE_F12=69,SDL_SCANCODE_PRINTSCREEN=70,SDL_SCANCODE_SCROLLLOCK=71,SDL_SCANCODE_PAUSE=72,SDL_SCANCODE_INSERT=73,SDL_SCANCODE_HOME=74,SDL_SCANCODE_PAGEUP=75,SDL_SCANCODE_DELETE=76,SDL_SCANCODE_END=77,SDL_SCANCODE_PAGEDOWN=78,SDL_SCANCODE_RIGHT=79,SDL_SCANCODE_LEFT=80,SDL_SCANCODE_DOWN=81,SDL_SCANCODE_UP=82,SDL_SCANCODE_NUMLOCKCLEAR=83,SDL_SCANCODE_KP_DIVIDE=84,SDL_SCANCODE_KP_MULTIPLY=85,SDL_SCANCODE_KP_MINUS=86,SDL_SCANCODE_KP_PLUS=87,SDL_SCANCODE_KP_ENTER=88,SDL_SCANCODE_KP_1=89,SDL_SCANCODE_KP_2=90,SDL_SCANCODE_KP_3=91,SDL_SCANCODE_KP_4=92,SDL_SCANCODE_KP_5=93,SDL_SCANCODE_KP_6=94,SDL_SCANCODE_KP_7=95,SDL_SCANCODE_KP_8=96,SDL_SCANCODE_KP_9=97,SDL_SCANCODE_KP_0=98,SDL_SCANCODE_KP_PERIOD=99,SDL_SCANCODE_NONUSBACKSLASH=100,SDL_SCANCODE_APPLICATION=101,SDL_SCANCODE_POWER=102,SDL_SCANCODE_KP_EQUALS=103,SDL_SCANCODE_F13=104,SDL_SCANCODE_F14=105,SDL_SCANCODE_F15=106,SDL_SCANCODE_F16=107,SDL_SCANCODE_F17=108,SDL_SCANCODE_F18=109,SDL_SCANCODE_F19=110,SDL_SCANCODE_F20=111,SDL_SCANCODE_F21=112,SDL_SCANCODE_F22=113,SDL_SCANCODE_F23=114,SDL_SCANCODE_F24=115,SDL_SCANCODE_EXECUTE=116,SDL_SCANCODE_HELP=117,SDL_SCANCODE_MENU=118,SDL_SCANCODE_SELECT=119,SDL_SCANCODE_STOP=120,SDL_SCANCODE_AGAIN=121,SDL_SCANCODE_UNDO=122,SDL_SCANCODE_CUT=123,SDL_SCANCODE_COPY=124,SDL_SCANCODE_PASTE=125,SDL_SCANCODE_FIND=126,SDL_SCANCODE_MUTE=127,SDL_SCANCODE_VOLUMEUP=128,SDL_SCANCODE_VOLUMEDOWN=129,SDL_SCANCODE_KP_COMMA=133,SDL_SCANCODE_KP_EQUALSAS400=134,SDL_SCANCODE_INTERNATIONAL1=135,SDL_SCANCODE_INTERNATIONAL2=136,SDL_SCANCODE_INTERNATIONAL3=137,SDL_SCANCODE_INTERNATIONAL4=138,SDL_SCANCODE_INTERNATIONAL5=139,SDL_SCANCODE_INTERNATIONAL6=140,SDL_SCANCODE_INTERNATIONAL7=141,SDL_SCANCODE_INTERNATIONAL8=142,SDL_SCANCODE_INTERNATIONAL9=143,SDL_SCANCODE_LANG1=144,SDL_SCANCODE_LANG2=145,SDL_SCANCODE_LANG3=146,SDL_SCANCODE_LANG4=147,SDL_SCANCODE_LANG5=148,SDL_SCANCODE_LANG6=149,SDL_SCANCODE_LANG7=150,SDL_SCANCODE_LANG8=151,SDL_SCANCODE_LANG9=152,SDL_SCANCODE_ALTERASE=153,SDL_SCANCODE_SYSREQ=154,SDL_SCANCODE_CANCEL=155,SDL_SCANCODE_CLEAR=156,SDL_SCANCODE_PRIOR=157,SDL_SCANCODE_RETURN2=158,SDL_SCANCODE_SEPARATOR=159,SDL_SCANCODE_OUT=160,SDL_SCANCODE_OPER=161,SDL_SCANCODE_CLEARAGAIN=162,SDL_SCANCODE_CRSEL=163,SDL_SCANCODE_EXSEL=164,SDL_SCANCODE_KP_00=176,SDL_SCANCODE_KP_000=177,SDL_SCANCODE_THOUSANDSSEPARATOR=178,SDL_SCANCODE_DECIMALSEPARATOR=179,SDL_SCANCODE_CURRENCYUNIT=180,SDL_SCANCODE_CURRENCYSUBUNIT=181,SDL_SCANCODE_KP_LEFTPAREN=182,SDL_SCANCODE_KP_RIGHTPAREN=183,SDL_SCANCODE_KP_LEFTBRACE=184,SDL_SCANCODE_KP_RIGHTBRACE=185,SDL_SCANCODE_KP_TAB=186,SDL_SCANCODE_KP_BACKSPACE=187,SDL_SCANCODE_KP_A=188,SDL_SCANCODE_KP_B=189,SDL_SCANCODE_KP_C=190,SDL_SCANCODE_KP_D=191,SDL_SCANCODE_KP_E=192,SDL_SCANCODE_KP_F=193,SDL_SCANCODE_KP_XOR=194,SDL_SCANCODE_KP_POWER=195,SDL_SCANCODE_KP_PERCENT=196,SDL_SCANCODE_KP_LESS=197,SDL_SCANCODE_KP_GREATER=198,SDL_SCANCODE_KP_AMPERSAND=199,SDL_SCANCODE_KP_DBLAMPERSAND=200,SDL_SCANCODE_KP_VERTICALBAR=201,SDL_SCANCODE_KP_DBLVERTICALBAR=202,SDL_SCANCODE_KP_COLON=203,SDL_SCANCODE_KP_HASH=204,SDL_SCANCODE_KP_SPACE=205,SDL_SCANCODE_KP_AT=206,SDL_SCANCODE_KP_EXCLAM=207,SDL_SCANCODE_KP_MEMSTORE=208,SDL_SCANCODE_KP_MEMRECALL=209,SDL_SCANCODE_KP_MEMCLEAR=210,SDL_SCANCODE_KP_MEMADD=211,SDL_SCANCODE_KP_MEMSUBTRACT=212,SDL_SCANCODE_KP_MEMMULTIPLY=213,SDL_SCANCODE_KP_MEMDIVIDE=214,SDL_SCANCODE_KP_PLUSMINUS=215,SDL_SCANCODE_KP_CLEAR=216,SDL_SCANCODE_KP_CLEARENTRY=217,SDL_SCANCODE_KP_BINARY=218,SDL_SCANCODE_KP_OCTAL=219,SDL_SCANCODE_KP_DECIMAL=220,SDL_SCANCODE_KP_HEXADECIMAL=221,SDL_SCANCODE_LCTRL=224,SDL_SCANCODE_LSHIFT=225,SDL_SCANCODE_LALT=226,SDL_SCANCODE_LGUI=227,SDL_SCANCODE_RCTRL=228,SDL_SCANCODE_RSHIFT=229,SDL_SCANCODE_RALT=230,SDL_SCANCODE_RGUI=231,SDL_SCANCODE_MODE=257,SDL_SCANCODE_AUDIONEXT=258,SDL_SCANCODE_AUDIOPREV=259,SDL_SCANCODE_AUDIOSTOP=260,SDL_SCANCODE_AUDIOPLAY=261,SDL_SCANCODE_AUDIOMUTE=262,SDL_SCANCODE_MEDIASELECT=263,SDL_SCANCODE_WWW=264,SDL_SCANCODE_MAIL=265,SDL_SCANCODE_CALCULATOR=266,SDL_SCANCODE_COMPUTER=267,SDL_SCANCODE_AC_SEARCH=268,SDL_SCANCODE_AC_HOME=269,SDL_SCANCODE_AC_BACK=270,SDL_SCANCODE_AC_FORWARD=271,SDL_SCANCODE_AC_STOP=272,SDL_SCANCODE_AC_REFRESH=273,SDL_SCANCODE_AC_BOOKMARKS=274,SDL_SCANCODE_BRIGHTNESSDOWN=275,SDL_SCANCODE_BRIGHTNESSUP=276,SDL_SCANCODE_DISPLAYSWITCH=277,SDL_SCANCODE_KBDILLUMTOGGLE=278,SDL_SCANCODE_KBDILLUMDOWN=279,SDL_SCANCODE_KBDILLUMUP=280,SDL_SCANCODE_EJECT=281,SDL_SCANCODE_SLEEP=282,SDL_SCANCODE_APP1=283,SDL_SCANCODE_APP2=284,SDL_SCANCODE_AUDIOREWIND=285,SDL_SCANCODE_AUDIOFASTFORWARD=286,SDL_NUM_SCANCODES=512};
typedef enum SDL_BlendOperation{SDL_BLENDOPERATION_ADD=1,SDL_BLENDOPERATION_SUBTRACT=2,SDL_BLENDOPERATION_REV_SUBTRACT=3,SDL_BLENDOPERATION_MINIMUM=4,SDL_BLENDOPERATION_MAXIMUM=5};
typedef enum SDL_JoystickType{SDL_JOYSTICK_TYPE_UNKNOWN=0,SDL_JOYSTICK_TYPE_GAMECONTROLLER=1,SDL_JOYSTICK_TYPE_WHEEL=2,SDL_JOYSTICK_TYPE_ARCADE_STICK=3,SDL_JOYSTICK_TYPE_FLIGHT_STICK=4,SDL_JOYSTICK_TYPE_DANCE_PAD=5,SDL_JOYSTICK_TYPE_GUITAR=6,SDL_JOYSTICK_TYPE_DRUM_KIT=7,SDL_JOYSTICK_TYPE_ARCADE_PAD=8,SDL_JOYSTICK_TYPE_THROTTLE=9};
struct SDL_BlitMap {};
struct wl_display {};
struct wl_surface {};
struct wl_shell_surface {};
struct _IO_marker {struct _IO_marker*_next;struct _IO_FILE*_sbuf;int _pos;};
struct _IO_FILE {int _flags;char*_IO_read_ptr;char*_IO_read_end;char*_IO_read_base;char*_IO_write_base;char*_IO_write_ptr;char*_IO_write_end;char*_IO_buf_base;char*_IO_buf_end;char*_IO_save_base;char*_IO_backup_base;char*_IO_save_end;struct _IO_marker*_markers;struct _IO_FILE*_chain;int _fileno;int _flags2;long _old_offset;unsigned short _cur_column;signed char _vtable_offset;char _shortbuf[1];void*_lock;long _offset;void*__pad1;void*__pad2;void*__pad3;void*__pad4;unsigned long __pad5;int _mode;char _unused2[15*sizeof(int)-4*sizeof(void*)-sizeof(size_t)];};
struct _SDL_iconv_t {};
struct SDL_Color {unsigned char r;unsigned char g;unsigned char b;unsigned char a;};
struct SDL_Palette {int ncolors;struct SDL_Color*colors;unsigned int version;int refcount;};
struct SDL_PixelFormat {unsigned int format;struct SDL_Palette*palette;unsigned char BitsPerPixel;unsigned char BytesPerPixel;unsigned char padding[2];unsigned int Rmask;unsigned int Gmask;unsigned int Bmask;unsigned int Amask;unsigned char Rloss;unsigned char Gloss;unsigned char Bloss;unsigned char Aloss;unsigned char Rshift;unsigned char Gshift;unsigned char Bshift;unsigned char Ashift;int refcount;struct SDL_PixelFormat*next;};
struct SDL_RWops {signed long(*size)(struct SDL_RWops*);signed long(*seek)(struct SDL_RWops*,signed long,int);unsigned long(*read)(struct SDL_RWops*,void*,unsigned long,unsigned long);unsigned long(*write)(struct SDL_RWops*,const void*,unsigned long,unsigned long);int(*close)(struct SDL_RWops*);unsigned int type;union {struct {enum SDL_bool autoclose;struct _IO_FILE*fp;}stdio;struct {unsigned char*base;unsigned char*here;unsigned char*stop;}mem;struct {void*data1;void*data2;}unknown;}hidden;};
struct SDL_Point {int x;int y;};
struct SDL_Rect {int x;int y;int w;int h;};
struct SDL_Surface {unsigned int flags;struct SDL_PixelFormat*format;int w;int h;int pitch;void*pixels;void*userdata;int locked;void*lock_data;struct SDL_Rect clip_rect;struct SDL_BlitMap*map;int refcount;};
struct SDL_DisplayMode {unsigned int format;int w;int h;int refresh_rate;void*driverdata;};
struct SDL_Window {};
struct SDL_AssertData {int always_ignore;unsigned int trigger_count;const char*condition;const char*filename;int linenum;const char*function;const struct SDL_AssertData*next;};
struct SDL_atomic_t {int value;};
struct SDL_mutex {};
struct SDL_semaphore {};
struct SDL_cond {};
struct SDL_Thread {};
struct SDL_AudioSpec {int freq;unsigned short format;unsigned char channels;unsigned char silence;unsigned short samples;unsigned short padding;unsigned int size;void(*callback)(void*,unsigned char*,int);void*userdata;};
struct SDL_AudioCVT {int needed;unsigned short src_format;unsigned short dst_format;double rate_incr;unsigned char*buf;int len;int len_cvt;int len_mult;double len_ratio;void(*filters)(struct SDL_AudioCVT*,unsigned short);int filter_index;};
struct _SDL_AudioStream {};
struct SDL_Keysym {enum SDL_Scancode scancode;signed int sym;unsigned short mod;unsigned int unused;};
struct SDL_Cursor {};
struct _SDL_Joystick {};
struct SDL_JoystickGUID {unsigned char data[16];};
struct _SDL_GameController {};
struct SDL_GameControllerButtonBind {enum SDL_GameControllerBindType bindType;union {int button;int axis;struct {int hat;int hat_mask;}hat;}value;};
struct SDL_Finger {signed long id;float x;float y;float pressure;};
struct SDL_CommonEvent {unsigned int type;unsigned int timestamp;};
struct SDL_WindowEvent {unsigned int type;unsigned int timestamp;unsigned int windowID;unsigned char event;unsigned char padding1;unsigned char padding2;unsigned char padding3;signed int data1;signed int data2;};
struct SDL_KeyboardEvent {unsigned int type;unsigned int timestamp;unsigned int windowID;unsigned char state;unsigned char repeat;unsigned char padding2;unsigned char padding3;struct SDL_Keysym keysym;};
struct SDL_TextEditingEvent {unsigned int type;unsigned int timestamp;unsigned int windowID;char text[(32)];signed int start;signed int length;};
struct SDL_TextInputEvent {unsigned int type;unsigned int timestamp;unsigned int windowID;char text[(32)];};
struct SDL_MouseMotionEvent {unsigned int type;unsigned int timestamp;unsigned int windowID;unsigned int which;unsigned int state;signed int x;signed int y;signed int xrel;signed int yrel;};
struct SDL_MouseButtonEvent {unsigned int type;unsigned int timestamp;unsigned int windowID;unsigned int which;unsigned char button;unsigned char state;unsigned char clicks;unsigned char padding1;signed int x;signed int y;};
struct SDL_MouseWheelEvent {unsigned int type;unsigned int timestamp;unsigned int windowID;unsigned int which;signed int x;signed int y;unsigned int direction;};
struct SDL_JoyAxisEvent {unsigned int type;unsigned int timestamp;signed int which;unsigned char axis;unsigned char padding1;unsigned char padding2;unsigned char padding3;signed short value;unsigned short padding4;};
struct SDL_JoyBallEvent {unsigned int type;unsigned int timestamp;signed int which;unsigned char ball;unsigned char padding1;unsigned char padding2;unsigned char padding3;signed short xrel;signed short yrel;};
struct SDL_JoyHatEvent {unsigned int type;unsigned int timestamp;signed int which;unsigned char hat;unsigned char value;unsigned char padding1;unsigned char padding2;};
struct SDL_JoyButtonEvent {unsigned int type;unsigned int timestamp;signed int which;unsigned char button;unsigned char state;unsigned char padding1;unsigned char padding2;};
struct SDL_JoyDeviceEvent {unsigned int type;unsigned int timestamp;signed int which;};
struct SDL_ControllerAxisEvent {unsigned int type;unsigned int timestamp;signed int which;unsigned char axis;unsigned char padding1;unsigned char padding2;unsigned char padding3;signed short value;unsigned short padding4;};
struct SDL_ControllerButtonEvent {unsigned int type;unsigned int timestamp;signed int which;unsigned char button;unsigned char state;unsigned char padding1;unsigned char padding2;};
struct SDL_ControllerDeviceEvent {unsigned int type;unsigned int timestamp;signed int which;};
struct SDL_AudioDeviceEvent {unsigned int type;unsigned int timestamp;unsigned int which;unsigned char iscapture;unsigned char padding1;unsigned char padding2;unsigned char padding3;};
struct SDL_TouchFingerEvent {unsigned int type;unsigned int timestamp;signed long touchId;signed long fingerId;float x;float y;float dx;float dy;float pressure;};
struct SDL_MultiGestureEvent {unsigned int type;unsigned int timestamp;signed long touchId;float dTheta;float dDist;float x;float y;unsigned short numFingers;unsigned short padding;};
struct SDL_DollarGestureEvent {unsigned int type;unsigned int timestamp;signed long touchId;signed long gestureId;unsigned int numFingers;float error;float x;float y;};
struct SDL_DropEvent {unsigned int type;unsigned int timestamp;char*file;unsigned int windowID;};
struct SDL_QuitEvent {unsigned int type;unsigned int timestamp;};
struct SDL_UserEvent {unsigned int type;unsigned int timestamp;unsigned int windowID;signed int code;void*data1;void*data2;};
struct SDL_SysWMEvent {unsigned int type;unsigned int timestamp;struct SDL_SysWMmsg*msg;};
union SDL_Event {unsigned int type;struct SDL_CommonEvent common;struct SDL_WindowEvent window;struct SDL_KeyboardEvent key;struct SDL_TextEditingEvent edit;struct SDL_TextInputEvent text;struct SDL_MouseMotionEvent motion;struct SDL_MouseButtonEvent button;struct SDL_MouseWheelEvent wheel;struct SDL_JoyAxisEvent jaxis;struct SDL_JoyBallEvent jball;struct SDL_JoyHatEvent jhat;struct SDL_JoyButtonEvent jbutton;struct SDL_JoyDeviceEvent jdevice;struct SDL_ControllerAxisEvent caxis;struct SDL_ControllerButtonEvent cbutton;struct SDL_ControllerDeviceEvent cdevice;struct SDL_AudioDeviceEvent adevice;struct SDL_QuitEvent quit;struct SDL_UserEvent user;struct SDL_SysWMEvent syswm;struct SDL_TouchFingerEvent tfinger;struct SDL_MultiGestureEvent mgesture;struct SDL_DollarGestureEvent dgesture;struct SDL_DropEvent drop;unsigned char padding[56];};
struct _SDL_Haptic {};
struct SDL_HapticDirection {unsigned char type;signed int dir[3];};
struct SDL_HapticConstant {unsigned short type;struct SDL_HapticDirection direction;unsigned int length;unsigned short delay;unsigned short button;unsigned short interval;signed short level;unsigned short attack_length;unsigned short attack_level;unsigned short fade_length;unsigned short fade_level;};
struct SDL_HapticPeriodic {unsigned short type;struct SDL_HapticDirection direction;unsigned int length;unsigned short delay;unsigned short button;unsigned short interval;unsigned short period;signed short magnitude;signed short offset;unsigned short phase;unsigned short attack_length;unsigned short attack_level;unsigned short fade_length;unsigned short fade_level;};
struct SDL_HapticCondition {unsigned short type;struct SDL_HapticDirection direction;unsigned int length;unsigned short delay;unsigned short button;unsigned short interval;unsigned short right_sat[3];unsigned short left_sat[3];signed short right_coeff[3];signed short left_coeff[3];unsigned short deadband[3];signed short center[3];};
struct SDL_HapticRamp {unsigned short type;struct SDL_HapticDirection direction;unsigned int length;unsigned short delay;unsigned short button;unsigned short interval;signed short start;signed short end;unsigned short attack_length;unsigned short attack_level;unsigned short fade_length;unsigned short fade_level;};
struct SDL_HapticLeftRight {unsigned short type;unsigned int length;unsigned short large_magnitude;unsigned short small_magnitude;};
struct SDL_HapticCustom {unsigned short type;struct SDL_HapticDirection direction;unsigned int length;unsigned short delay;unsigned short button;unsigned short interval;unsigned char channels;unsigned short period;unsigned short samples;unsigned short*data;unsigned short attack_length;unsigned short attack_level;unsigned short fade_length;unsigned short fade_level;};
union SDL_HapticEffect {unsigned short type;struct SDL_HapticConstant constant;struct SDL_HapticPeriodic periodic;struct SDL_HapticCondition condition;struct SDL_HapticRamp ramp;struct SDL_HapticLeftRight leftright;struct SDL_HapticCustom custom;};
struct SDL_MessageBoxButtonData {unsigned int flags;int buttonid;const char*text;};
struct SDL_MessageBoxColor {unsigned char r;unsigned char g;unsigned char b;};
struct SDL_MessageBoxColorScheme {struct SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX];};
struct SDL_MessageBoxData {unsigned int flags;struct SDL_Window*window;const char*title;const char*message;int numbuttons;const struct SDL_MessageBoxButtonData*buttons;const struct SDL_MessageBoxColorScheme*colorScheme;};
struct SDL_RendererInfo {const char*name;unsigned int flags;unsigned int num_texture_formats;unsigned int texture_formats[16];int max_texture_width;int max_texture_height;};
struct SDL_Renderer {};
struct SDL_Texture {};
struct SDL_version {unsigned char major;unsigned char minor;unsigned char patch;};
struct _XDisplay {};
struct XKeyEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;unsigned long root;unsigned long subwindow;unsigned long time;int x;int y;int x_root;int y_root;unsigned int state;unsigned int keycode;int same_screen;};
struct XButtonEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;unsigned long root;unsigned long subwindow;unsigned long time;int x;int y;int x_root;int y_root;unsigned int state;unsigned int button;int same_screen;};
struct XMotionEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;unsigned long root;unsigned long subwindow;unsigned long time;int x;int y;int x_root;int y_root;unsigned int state;char is_hint;int same_screen;};
struct XCrossingEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;unsigned long root;unsigned long subwindow;unsigned long time;int x;int y;int x_root;int y_root;int mode;int detail;int same_screen;int focus;unsigned int state;};
struct XFocusChangeEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;int mode;int detail;};
struct XKeymapEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;char key_vector[32];};
struct XExposeEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;int x;int y;int width;int height;int count;};
struct XGraphicsExposeEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long drawable;int x;int y;int width;int height;int count;int major_code;int minor_code;};
struct XNoExposeEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long drawable;int major_code;int minor_code;};
struct XVisibilityEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;int state;};
struct XCreateWindowEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long parent;unsigned long window;int x;int y;int width;int height;int border_width;int override_redirect;};
struct XDestroyWindowEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long event;unsigned long window;};
struct XUnmapEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long event;unsigned long window;int from_configure;};
struct XMapEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long event;unsigned long window;int override_redirect;};
struct XMapRequestEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long parent;unsigned long window;};
struct XReparentEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long event;unsigned long window;unsigned long parent;int x;int y;int override_redirect;};
struct XConfigureEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long event;unsigned long window;int x;int y;int width;int height;int border_width;unsigned long above;int override_redirect;};
struct XGravityEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long event;unsigned long window;int x;int y;};
struct XResizeRequestEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;int width;int height;};
struct XConfigureRequestEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long parent;unsigned long window;int x;int y;int width;int height;int border_width;unsigned long above;int detail;unsigned long value_mask;};
struct XCirculateEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long event;unsigned long window;int place;};
struct XCirculateRequestEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long parent;unsigned long window;int place;};
struct XPropertyEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;unsigned long atom;unsigned long time;int state;};
struct XSelectionClearEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;unsigned long selection;unsigned long time;};
struct XSelectionRequestEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long owner;unsigned long requestor;unsigned long selection;unsigned long target;unsigned long property;unsigned long time;};
struct XSelectionEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long requestor;unsigned long selection;unsigned long target;unsigned long property;unsigned long time;};
struct XColormapEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;unsigned long colormap;int new;int state;};
struct XClientMessageEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;unsigned long message_type;int format;union {char b[20];short s[10];long l[5];}data;};
struct XMappingEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;int request;int first_keycode;int count;};
struct XErrorEvent {int type;struct _XDisplay*display;unsigned long resourceid;unsigned long serial;unsigned char error_code;unsigned char request_code;unsigned char minor_code;};
struct XAnyEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;unsigned long window;};
struct XGenericEvent {int type;unsigned long serial;int send_event;struct _XDisplay*display;int extension;int evtype;};
struct XGenericEventCookie {int type;unsigned long serial;int send_event;struct _XDisplay*display;int extension;int evtype;unsigned int cookie;void*data;};
union _XEvent {int type;struct XAnyEvent xany;struct XKeyEvent xkey;struct XButtonEvent xbutton;struct XMotionEvent xmotion;struct XCrossingEvent xcrossing;struct XFocusChangeEvent xfocus;struct XExposeEvent xexpose;struct XGraphicsExposeEvent xgraphicsexpose;struct XNoExposeEvent xnoexpose;struct XVisibilityEvent xvisibility;struct XCreateWindowEvent xcreatewindow;struct XDestroyWindowEvent xdestroywindow;struct XUnmapEvent xunmap;struct XMapEvent xmap;struct XMapRequestEvent xmaprequest;struct XReparentEvent xreparent;struct XConfigureEvent xconfigure;struct XGravityEvent xgravity;struct XResizeRequestEvent xresizerequest;struct XConfigureRequestEvent xconfigurerequest;struct XCirculateEvent xcirculate;struct XCirculateRequestEvent xcirculaterequest;struct XPropertyEvent xproperty;struct XSelectionClearEvent xselectionclear;struct XSelectionRequestEvent xselectionrequest;struct XSelectionEvent xselection;struct XColormapEvent xcolormap;struct XClientMessageEvent xclient;struct XMappingEvent xmapping;struct XErrorEvent xerror;struct XKeymapEvent xkeymap;struct XGenericEvent xgeneric;struct XGenericEventCookie xcookie;long pad[24];};
struct SDL_SysWMmsg {struct SDL_version version;enum SDL_SYSWM_TYPE subsystem;union {struct {union _XEvent event;}x11;int dummy;}msg;};
struct SDL_SysWMinfo {struct SDL_version version;enum SDL_SYSWM_TYPE subsystem;union {struct {struct _XDisplay*display;unsigned long window;}x11;struct {struct wl_display*display;struct wl_surface*surface;struct wl_shell_surface*shell_surface;}wl;unsigned char dummy[64];}info;};
enum SDL_bool(SDL_HasNEON)();
int(SDL_HapticStopAll)(struct _SDL_Haptic*);
void(SDL_FlushEvent)(unsigned int);
double(SDL_ceil)(double);
void(SDL_FreeAudioStream)(struct _SDL_AudioStream*);
void(SDL_DestroySemaphore)(struct SDL_semaphore*);
int(SDL_SetPaletteColors)(struct SDL_Palette*,const struct SDL_Color*,int,int);
unsigned int(SDL_GetWindowPixelFormat)(struct SDL_Window*);
void(SDL_HideWindow)(struct SDL_Window*);
int(SDL_ShowCursor)(int);
struct SDL_Texture*(SDL_CreateTextureFromSurface)(struct SDL_Renderer*,struct SDL_Surface*);
unsigned long(SDL_WriteBE16)(struct SDL_RWops*,unsigned short);
void(SDL_UnionRect)(const struct SDL_Rect*,const struct SDL_Rect*,struct SDL_Rect*);
unsigned int(SDL_SemValue)(struct SDL_semaphore*);
unsigned long(SDL_ReadBE64)(struct SDL_RWops*);
int(SDL_SaveDollarTemplate)(signed long,struct SDL_RWops*);
int(SDL_SetError)(const char*,...);
double(SDL_log10)(double);
const char*(SDL_JoystickName)(struct _SDL_Joystick*);
int(SDL_UpdateWindowSurfaceRects)(struct SDL_Window*,const struct SDL_Rect*,int);
int(SDL_AtomicGet)(struct SDL_atomic_t*);
struct SDL_Cursor*(SDL_CreateSystemCursor)(enum SDL_SystemCursor);
enum SDL_bool(SDL_IsScreenSaverEnabled)();
void(SDL_Delay)(unsigned int);
int(SDL_GL_GetAttribute)(enum SDL_GLattr,int*);
unsigned long(SDL_wcslcpy)(int*,const int*,unsigned long);
signed short(SDL_GameControllerGetAxis)(struct _SDL_GameController*,enum SDL_GameControllerAxis);
double(SDL_atof)(const char*);
void(SDL_AddHintCallback)(const char*,void(*callback)(void*,const char*,const char*,const char*),void*);
float(SDL_logf)(float);
void(SDL_GetClipRect)(struct SDL_Surface*,struct SDL_Rect*);
enum SDL_YUV_CONVERSION_MODE(SDL_GetYUVConversionModeForResolution)(int,int);
unsigned long(SDL_ThreadID)();
struct SDL_Window*(SDL_GetKeyboardFocus)();
int(SDL_strcmp)(const char*,const char*);
int(SDL_sscanf)(const char*,const char*,...);
int(SDL_SemTryWait)(struct SDL_semaphore*);
void*(SDL_calloc)(unsigned long,unsigned long);
struct SDL_Window*(SDL_CreateShapedWindow)(const char*,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int);
int(SDL_iconv_close)(struct _SDL_iconv_t*);
void(SDL_MemoryBarrierReleaseFunction)();
enum SDL_bool(SDL_GetWindowWMInfo)(struct SDL_Window*,struct SDL_SysWMinfo*);
int(SDL_SetWindowShape)(struct SDL_Window*,struct SDL_Surface*,void*);
void(SDL_MemoryBarrierAcquireFunction)();
void(SDL_LogDebug)(int,const char*,...);
int(SDL_JoystickNumHats)(struct _SDL_Joystick*);
struct SDL_Window*(SDL_GetGrabbedWindow)();
int(SDL_UnlockMutex)(struct SDL_mutex*);
enum SDL_bool(SDL_GameControllerGetAttached)(struct _SDL_GameController*);
enum SDL_bool(SDL_HasSSE)();
void*(SDL_realloc)(void*,unsigned long);
const struct SDL_AssertData*(SDL_GetAssertionReport)();
void(SDL_LogSetOutputFunction)(void(*callback)(void*,int,enum SDL_LogPriority,const char*),void*);
const char*(SDL_GetVideoDriver)(int);
void*(SDL_LoadFile_RW)(struct SDL_RWops*,unsigned long*,int);
int(SDL_HapticRunEffect)(struct _SDL_Haptic*,int,unsigned int);
int(SDL_RenderCopyEx)(struct SDL_Renderer*,struct SDL_Texture*,const struct SDL_Rect*,const struct SDL_Rect*,const double,const struct SDL_Point*,const enum SDL_RendererFlip);
int(SDL_GL_SetSwapInterval)(int);
void(SDL_ClearHints)();
double(SDL_atan)(double);
int(SDL_LockTexture)(struct SDL_Texture*,const struct SDL_Rect*,void**,int*);
struct _SDL_Joystick*(SDL_JoystickOpen)(int);
int(SDL_JoystickEventState)(int);
unsigned int(SDL_WasInit)(unsigned int);
struct _SDL_iconv_t*(SDL_iconv_open)(const char*,const char*);
unsigned long(SDL_strtoull)(const char*,char**,int);
int(SDL_SaveBMP_RW)(struct SDL_Surface*,struct SDL_RWops*,int);
void(SDL_ResetAssertionReport)();
struct SDL_Window*(SDL_GetMouseFocus)();
void(SDL_ClearQueuedAudio)(unsigned int);
void(SDL_SetTextInputRect)(struct SDL_Rect*);
const unsigned char*(SDL_GetKeyboardState)(int*);
void(SDL_GL_ResetAttributes)();
int(SDL_HapticNumEffects)(struct _SDL_Haptic*);
void(SDL_RaiseWindow)(struct SDL_Window*);
enum SDL_bool(SDL_PixelFormatEnumToMasks)(unsigned int,int*,unsigned int*,unsigned int*,unsigned int*,unsigned int*);
int(SDL_GetRenderDrawColor)(struct SDL_Renderer*,unsigned char*,unsigned char*,unsigned char*,unsigned char*);
struct _SDL_GameController*(SDL_GameControllerFromInstanceID)(signed int);
unsigned short(SDL_JoystickGetDeviceVendor)(int);
unsigned char(SDL_JoystickGetButton)(struct _SDL_Joystick*,int);
int(SDL_SetWindowHitTest)(struct SDL_Window*,enum SDL_HitTestResult(*callback)(struct SDL_Window*,const struct SDL_Point*,void*),void*);
int(SDL_WarpMouseGlobal)(int,int);
int(SDL_PeepEvents)(union SDL_Event*,int,enum SDL_eventaction,unsigned int,unsigned int);
int(SDL_FillRect)(struct SDL_Surface*,const struct SDL_Rect*,unsigned int);
void(SDL_AtomicLock)(int*);
int(SDL_GetSurfaceBlendMode)(struct SDL_Surface*,enum SDL_BlendMode*);
const char*(SDL_JoystickNameForIndex)(int);
int(SDL_GetSystemRAM)();
unsigned long(SDL_wcslcat)(int*,const int*,unsigned long);
int(SDL_SemWaitTimeout)(struct SDL_semaphore*,unsigned int);
struct SDL_Surface*(SDL_CreateRGBSurfaceWithFormatFrom)(void*,int,int,int,int,unsigned int);
void(SDL_FreeCursor)(struct SDL_Cursor*);
struct SDL_Cursor*(SDL_CreateColorCursor)(struct SDL_Surface*,int,int);
float(SDL_sqrtf)(float);
double(SDL_cos)(double);
int(SDL_NumJoysticks)();
char*(SDL_GameControllerMapping)(struct _SDL_GameController*);
void*(SDL_memcpy)(void*,const void*,unsigned long);
const char*(SDL_GetRevision)();
void(SDL_VideoQuit)();
void(SDL_FreeWAV)(unsigned char*);
double(SDL_scalbn)(double,int);
enum SDL_bool(SDL_GL_ExtensionSupported)(const char*);
int(SDL_strncmp)(const char*,const char*,unsigned long);
unsigned short(SDL_GameControllerGetVendor)(struct _SDL_GameController*);
enum SDL_bool(SDL_HasRDTSC)();
int(SDL_RenderSetClipRect)(struct SDL_Renderer*,const struct SDL_Rect*);
double(SDL_floor)(double);
int(SDL_GL_LoadLibrary)(const char*);
int(SDL_SetSurfaceBlendMode)(struct SDL_Surface*,enum SDL_BlendMode);
int(SDL_tolower)(int);
char*(SDL_ultoa)(unsigned long,char*,int);
unsigned short(SDL_JoystickGetDeviceProduct)(int);
struct SDL_PixelFormat*(SDL_AllocFormat)(unsigned int);
const char*(SDL_GetThreadName)(struct SDL_Thread*);
enum SDL_AssertState(SDL_ReportAssertion)(struct SDL_AssertData*,const char*,const char*,int);
void(SDL_StopTextInput)();
unsigned long(SDL_wcslen)(const int*);
int(SDL_abs)(int);
int(SDL_SetTextureAlphaMod)(struct SDL_Texture*,unsigned char);
void(SDL_CalculateGammaRamp)(float,unsigned short*);
int(SDL_GetCurrentDisplayMode)(int,struct SDL_DisplayMode*);
void(SDL_AudioQuit)();
void(SDL_GameControllerClose)(struct _SDL_GameController*);
void(SDL_GetRGB)(unsigned int,const struct SDL_PixelFormat*,unsigned char*,unsigned char*,unsigned char*);
int(SDL_SetSurfaceColorMod)(struct SDL_Surface*,unsigned char,unsigned char,unsigned char);
int(SDL_GetNumAudioDevices)(int);
unsigned long(SDL_strtoul)(const char*,char**,int);
int(SDL_SetWindowInputFocus)(struct SDL_Window*);
double(SDL_pow)(double,double);
void(SDL_SetWindowResizable)(struct SDL_Window*,enum SDL_bool);
void(SDL_GL_SwapWindow)(struct SDL_Window*);
unsigned short(SDL_JoystickGetProduct)(struct _SDL_Joystick*);
int(SDL_PushEvent)(union SDL_Event*);
void(SDL_EnableScreenSaver)();
enum SDL_YUV_CONVERSION_MODE(SDL_GetYUVConversionMode)();
enum SDL_bool(SDL_GetWindowGrab)(struct SDL_Window*);
struct SDL_RWops*(SDL_RWFromMem)(void*,int);
char*(SDL_ulltoa)(unsigned long,char*,int);
void(SDL_MixAudio)(unsigned char*,const unsigned char*,unsigned int,int);
struct SDL_Window*(SDL_CreateWindow)(const char*,int,int,int,int,unsigned int);
int(SDL_HapticRumblePlay)(struct _SDL_Haptic*,float,unsigned int);
int(SDL_GetCPUCacheLineSize)();
void(SDL_LogSetAllPriority)(enum SDL_LogPriority);
void(SDL_ShowWindow)(struct SDL_Window*);
char*(SDL_strlwr)(char*);
const char*(SDL_GetWindowTitle)(struct SDL_Window*);
const char*(SDL_GameControllerNameForIndex)(int);
enum SDL_bool(SDL_IntersectRectAndLine)(const struct SDL_Rect*,int*,int*,int*,int*);
struct SDL_Cursor*(SDL_GetCursor)();
char*(SDL_strdup)(const char*);
void(SDL_DestroyMutex)(struct SDL_mutex*);
int(SDL_HapticSetAutocenter)(struct _SDL_Haptic*,int);
int(SDL_LoadDollarTemplates)(signed long,struct SDL_RWops*);
void(SDL_SetWindowTitle)(struct SDL_Window*,const char*);
int(SDL_toupper)(int);
int(SDL_GetNumRenderDrivers)();
unsigned int(SDL_MapRGB)(const struct SDL_PixelFormat*,unsigned char,unsigned char,unsigned char);
void*(SDL_RenderGetMetalLayer)(struct SDL_Renderer*);
void(SDL_GetMemoryFunctions)(void*(*malloc_func)(unsigned long),void*(*calloc_func)(unsigned long,unsigned long),void*(*realloc_func)(void*,unsigned long),void(*free_func)(void*));
struct SDL_Window*(SDL_GL_GetCurrentWindow)();
int(SDL_CondWait)(struct SDL_cond*,struct SDL_mutex*);
double(SDL_acos)(double);
float(SDL_cosf)(float);
enum SDL_LogPriority(SDL_LogGetPriority)(int);
unsigned int(SDL_ReadLE32)(struct SDL_RWops*);
int(SDL_SetRenderDrawColor)(struct SDL_Renderer*,unsigned char,unsigned char,unsigned char,unsigned char);
unsigned short(SDL_ReadLE16)(struct SDL_RWops*);
void*(SDL_memset)(void*,int,unsigned long);
int(SDL_GetRendererOutputSize)(struct SDL_Renderer*,int*,int*);
const char*(SDL_GetError)();
void(SDL_SetWindowMinimumSize)(struct SDL_Window*,int,int);
enum SDL_bool(SDL_HasClipboardText)();
int(SDL_SetMemoryFunctions)(void*(*malloc_func)(unsigned long),void*(*calloc_func)(unsigned long,unsigned long),void*(*realloc_func)(void*,unsigned long),void(*free_func)(void*));
const char*(SDL_GetAudioDeviceName)(int,int);
int(SDL_BuildAudioCVT)(struct SDL_AudioCVT*,unsigned short,unsigned char,int,unsigned short,unsigned char,int);
int(SDL_RenderClear)(struct SDL_Renderer*);
unsigned char(SDL_JoystickGetHat)(struct _SDL_Joystick*,int);
char*(SDL_itoa)(int,char*,int);
void(SDL_HapticClose)(struct _SDL_Haptic*);
enum SDL_GameControllerAxis(SDL_GameControllerGetAxisFromString)(const char*);
struct SDL_Finger*(SDL_GetTouchFinger)(signed long,int);
enum SDL_bool(SDL_RemoveTimer)(int);
enum SDL_Keymod(SDL_GetModState)();
struct SDL_Surface*(SDL_DuplicateSurface)(struct SDL_Surface*);
enum SDL_Scancode(SDL_GetScancodeFromName)(const char*);
int(SDL_AtomicAdd)(struct SDL_atomic_t*,int);
int(SDL_GetRevisionNumber)();
struct SDL_Surface*(SDL_ConvertSurfaceFormat)(struct SDL_Surface*,unsigned int,unsigned int);
void(SDL_LockJoysticks)();
unsigned char(SDL_GameControllerGetButton)(struct _SDL_GameController*,enum SDL_GameControllerButton);
unsigned long(SDL_strlen)(const char*);
enum SDL_bool(SDL_GetHintBoolean)(const char*,enum SDL_bool);
int(SDL_GetNumTouchDevices)();
signed short(SDL_JoystickGetAxis)(struct _SDL_Joystick*,int);
void*(SDL_GetWindowData)(struct SDL_Window*,const char*);
double(SDL_sin)(double);
enum SDL_bool(SDL_HasIntersection)(const struct SDL_Rect*,const struct SDL_Rect*);
enum SDL_bool(SDL_IsGameController)(int);
int(SDL_SetThreadPriority)(enum SDL_ThreadPriority);
unsigned int(SDL_HapticQuery)(struct _SDL_Haptic*);
const char*(SDL_GetScancodeName)(enum SDL_Scancode);
unsigned short(SDL_GameControllerGetProductVersion)(struct _SDL_GameController*);
int(SDL_atoi)(const char*);
void(SDL_UnlockSurface)(struct SDL_Surface*);
enum SDL_bool(SDL_HasSSE3)();
int(SDL_GL_SetAttribute)(enum SDL_GLattr,int);
char*(SDL_getenv)(const char*);
int(SDL_HapticOpened)(int);
char*(SDL_ltoa)(long,char*,int);
void(SDL_HapticDestroyEffect)(struct _SDL_Haptic*,int);
void(SDL_GetWindowMinimumSize)(struct SDL_Window*,int*,int*);
unsigned long(SDL_strlcat)(char*,const char*,unsigned long);
enum SDL_bool(SDL_IsTextInputActive)();
int(SDL_GetNumTouchFingers)(signed long);
int(SDL_GL_UnbindTexture)(struct SDL_Texture*);
void(SDL_Log)(const char*,...);
void(SDL_LogVerbose)(int,const char*,...);
unsigned long(SDL_ReadLE64)(struct SDL_RWops*);
struct SDL_Window*(SDL_GetWindowFromID)(unsigned int);
int(SDL_GetDesktopDisplayMode)(int,struct SDL_DisplayMode*);
int(SDL_HapticGetEffectStatus)(struct _SDL_Haptic*,int);
unsigned short(SDL_JoystickGetProductVersion)(struct _SDL_Joystick*);
int(SDL_LowerBlitScaled)(struct SDL_Surface*,struct SDL_Rect*,struct SDL_Surface*,struct SDL_Rect*);
void(SDL_FreePalette)(struct SDL_Palette*);
struct SDL_Texture*(SDL_GetRenderTarget)(struct SDL_Renderer*);
enum SDL_bool(SDL_IntersectRect)(const struct SDL_Rect*,const struct SDL_Rect*,struct SDL_Rect*);
int(SDL_strcasecmp)(const char*,const char*);
int(SDL_SoftStretch)(struct SDL_Surface*,const struct SDL_Rect*,struct SDL_Surface*,const struct SDL_Rect*);
struct SDL_Thread*(SDL_CreateThread)(int(*fn)(void*),const char*,void*);
int(SDL_JoystickNumButtons)(struct _SDL_Joystick*);
int(SDL_AddTimer)(unsigned int,unsigned int(*callback)(unsigned int,void*),void*);
int(SDL_RenderSetViewport)(struct SDL_Renderer*,const struct SDL_Rect*);
int(SDL_GetWindowDisplayMode)(struct SDL_Window*,struct SDL_DisplayMode*);
int(SDL_UpdateWindowSurface)(struct SDL_Window*);
unsigned short(SDL_JoystickGetVendor)(struct _SDL_Joystick*);
float(SDL_asinf)(float);
struct SDL_mutex*(SDL_CreateMutex)();
int(SDL_HapticEffectSupported)(struct _SDL_Haptic*,union SDL_HapticEffect*);
unsigned long(SDL_GetThreadID)(struct SDL_Thread*);
void*(SDL_TLSGet)(unsigned int);
unsigned char(SDL_EventState)(unsigned int,int);
void(SDL_Quit)();
void(SDL_QuitSubSystem)(unsigned int);
int(SDL_InitSubSystem)(unsigned int);
int(SDL_Init)(unsigned int);
unsigned long(SDL_WriteLE32)(struct SDL_RWops*,unsigned int);
void(SDL_ClearError)();
enum SDL_bool(SDL_SetHintWithPriority)(const char*,const char*,enum SDL_HintPriority);
unsigned int(SDL_GetTicks)();
void*(SDL_RenderGetMetalCommandEncoder)(struct SDL_Renderer*);
int(SDL_GL_BindTexture)(struct SDL_Texture*,float*,float*);
void(SDL_RestoreWindow)(struct SDL_Window*);
struct SDL_RWops*(SDL_AllocRW)();
void(SDL_RenderPresent)(struct SDL_Renderer*);
int(SDL_RenderCopy)(struct SDL_Renderer*,struct SDL_Texture*,const struct SDL_Rect*,const struct SDL_Rect*);
enum SDL_bool(SDL_HasMMX)();
int(SDL_RenderDrawRects)(struct SDL_Renderer*,const struct SDL_Rect*,int);
int(SDL_RenderDrawRect)(struct SDL_Renderer*,const struct SDL_Rect*);
int(SDL_RenderDrawLines)(struct SDL_Renderer*,const struct SDL_Point*,int);
int(SDL_RenderDrawLine)(struct SDL_Renderer*,int,int,int,int);
unsigned long(SDL_utf8strlen)(const char*);
unsigned long(SDL_utf8strlcpy)(char*,const char*,unsigned long);
int(SDL_RenderDrawPoint)(struct SDL_Renderer*,int,int);
int(SDL_GetRenderDrawBlendMode)(struct SDL_Renderer*,enum SDL_BlendMode*);
void*(SDL_LoadFunction)(void*,const char*);
unsigned long(SDL_GetPerformanceCounter)();
void(SDL_RenderGetScale)(struct SDL_Renderer*,float*,float*);
int(SDL_RenderSetScale)(struct SDL_Renderer*,float,float);
enum SDL_bool(SDL_RenderIsClipEnabled)(struct SDL_Renderer*);
struct SDL_GameControllerButtonBind(SDL_GameControllerGetBindForAxis)(struct _SDL_GameController*,enum SDL_GameControllerAxis);
int(SDL_Error)(enum SDL_errorcode);
void(SDL_RenderGetClipRect)(struct SDL_Renderer*,struct SDL_Rect*);
unsigned long(SDL_iconv)(struct _SDL_iconv_t*,const char**,unsigned long*,char**,unsigned long*);
void(SDL_RenderGetViewport)(struct SDL_Renderer*,struct SDL_Rect*);
enum SDL_bool(SDL_RenderGetIntegerScale)(struct SDL_Renderer*);
int(SDL_RenderSetIntegerScale)(struct SDL_Renderer*,enum SDL_bool);
void(SDL_RenderGetLogicalSize)(struct SDL_Renderer*,int*,int*);
int(SDL_RenderSetLogicalSize)(struct SDL_Renderer*,int,int);
struct SDL_AudioSpec*(SDL_LoadWAV_RW)(struct SDL_RWops*,int,struct SDL_AudioSpec*,unsigned char**,unsigned int*);
enum SDL_bool(SDL_RenderTargetSupported)(struct SDL_Renderer*);
struct SDL_GameControllerButtonBind(SDL_GameControllerGetBindForButton)(struct _SDL_GameController*,enum SDL_GameControllerButton);
int(SDL_UpdateYUVTexture)(struct SDL_Texture*,const struct SDL_Rect*,const unsigned char*,int,const unsigned char*,int,const unsigned char*,int);
int(SDL_UpdateTexture)(struct SDL_Texture*,const struct SDL_Rect*,const void*,int);
int(SDL_SetTextureBlendMode)(struct SDL_Texture*,enum SDL_BlendMode);
int(SDL_GetTextureAlphaMod)(struct SDL_Texture*,unsigned char*);
void(SDL_FreeFormat)(struct SDL_PixelFormat*);
int(SDL_GetTextureColorMod)(struct SDL_Texture*,unsigned char*,unsigned char*,unsigned char*);
int(SDL_SetTextureColorMod)(struct SDL_Texture*,unsigned char,unsigned char,unsigned char);
int(SDL_QueryTexture)(struct SDL_Texture*,unsigned int*,int*,int*,int*);
struct _SDL_AudioStream*(SDL_NewAudioStream)(const unsigned short,const unsigned char,const int,const unsigned short,const unsigned char,const int);
int(SDL_UpperBlitScaled)(struct SDL_Surface*,const struct SDL_Rect*,struct SDL_Surface*,struct SDL_Rect*);
void(SDL_UnlockTexture)(struct SDL_Texture*);
struct SDL_Renderer*(SDL_CreateSoftwareRenderer)(struct SDL_Surface*);
struct SDL_Renderer*(SDL_CreateRenderer)(struct SDL_Window*,int,unsigned int);
void(SDL_SetCursor)(struct SDL_Cursor*);
enum SDL_PowerState(SDL_GetPowerInfo)(int*,int*);
int(SDL_ShowSimpleMessageBox)(unsigned int,const char*,const char*,struct SDL_Window*);
void(SDL_DisableScreenSaver)();
int(SDL_ShowMessageBox)(const struct SDL_MessageBoxData*,int*);
void(SDL_LogGetOutputFunction)(void(*callback)(void*,int,enum SDL_LogPriority,const char*),void**);
void(SDL_LogMessageV)(int,enum SDL_LogPriority,const char*,__builtin_va_list);
void(SDL_JoystickUpdate)();
void(SDL_LogMessage)(int,enum SDL_LogPriority,const char*,...);
void(SDL_LogCritical)(int,const char*,...);
float(SDL_sinf)(float);
void(SDL_LogError)(int,const char*,...);
unsigned long(SDL_WriteU8)(struct SDL_RWops*,unsigned char);
char*(SDL_strchr)(const char*,int);
void(SDL_LogSetPriority)(int,enum SDL_LogPriority);
int(SDL_HapticNumEffectsPlaying)(struct _SDL_Haptic*);
void*(SDL_LoadObject)(const char*);
void(SDL_DelHintCallback)(const char*,void(*callback)(void*,const char*,const char*,const char*),void*);
const char*(SDL_GetHint)(const char*);
enum SDL_bool(SDL_SetHint)(const char*,const char*);
int(SDL_SetRenderDrawBlendMode)(struct SDL_Renderer*,enum SDL_BlendMode);
int(SDL_HapticRumbleStop)(struct _SDL_Haptic*);
int(SDL_HapticRumbleInit)(struct _SDL_Haptic*);
enum SDL_JoystickPowerLevel(SDL_JoystickCurrentPowerLevel)(struct _SDL_Joystick*);
int(SDL_HapticUnpause)(struct _SDL_Haptic*);
float(SDL_copysignf)(float,float);
int(SDL_AtomicSet)(struct SDL_atomic_t*,int);
int(SDL_HapticSetGain)(struct _SDL_Haptic*,int);
int(SDL_HapticNumAxes)(struct _SDL_Haptic*);
int(SDL_JoystickGetBall)(struct _SDL_Joystick*,int,int*,int*);
void(SDL_UnloadObject)(void*);
int(SDL_JoystickIsHaptic)(struct _SDL_Joystick*);
void(SDL_PumpEvents)();
int(SDL_CondWaitTimeout)(struct SDL_cond*,struct SDL_mutex*,unsigned int);
struct _SDL_Haptic*(SDL_HapticOpenFromMouse)();
int(SDL_MouseIsHaptic)();
struct _SDL_Haptic*(SDL_HapticOpen)(int);
const char*(SDL_HapticName)(int);
int(SDL_NumHaptics)();
float(SDL_atanf)(float);
char*(SDL_GetPrefPath)(const char*,const char*);
struct SDL_RWops*(SDL_RWFromConstMem)(const void*,int);
int(SDL_isspace)(int);
int(SDL_CondBroadcast)(struct SDL_cond*);
void(SDL_DelEventWatch)(int(*filter)(void*,union SDL_Event*),void*);
int(SDL_HapticUpdateEffect)(struct _SDL_Haptic*,int,union SDL_HapticEffect*);
enum SDL_bool(SDL_GetEventFilter)(int(*filter)(void*,union SDL_Event*),void**);
void(SDL_SetEventFilter)(int(*filter)(void*,union SDL_Event*),void*);
int(SDL_WaitEventTimeout)(union SDL_Event*,int);
int(SDL_WaitEvent)(union SDL_Event*);
int(SDL_GetWindowOpacity)(struct SDL_Window*,float*);
unsigned long(SDL_WriteLE16)(struct SDL_RWops*,unsigned short);
int(SDL_PollEvent)(union SDL_Event*);
void(SDL_SetAssertionHandler)(enum SDL_AssertState(*handler)(const struct SDL_AssertData*,void*),void*);
double(SDL_copysign)(double,double);
enum SDL_bool(SDL_HasEvents)(unsigned int,unsigned int);
int(SDL_SetWindowModalFor)(struct SDL_Window*,struct SDL_Window*);
int(SDL_AudioInit)(const char*);
enum SDL_bool(SDL_HasEvent)(unsigned int);
signed int(SDL_JoystickInstanceID)(struct _SDL_Joystick*);
int(SDL_RecordGesture)(signed long);
signed long(SDL_GetTouchDevice)(int);
void(SDL_FilterEvents)(int(*filter)(void*,union SDL_Event*),void*);
struct SDL_Renderer*(SDL_GetRenderer)(struct SDL_Window*);
int(SDL_QueueAudio)(unsigned int,const void*,unsigned int);
const char*(SDL_GameControllerGetStringForAxis)(enum SDL_GameControllerAxis);
int(SDL_SetSurfaceRLE)(struct SDL_Surface*,int);
float(SDL_log10f)(float);
int(SDL_GameControllerEventState)(int);
const char*(SDL_GetPlatform)();
int(SDL_RenderFillRect)(struct SDL_Renderer*,const struct SDL_Rect*);
unsigned short(SDL_GameControllerGetProduct)(struct _SDL_GameController*);
void(SDL_UnlockAudioDevice)(unsigned int);
const char*(SDL_GameControllerName)(struct _SDL_GameController*);
signed int(SDL_GetKeyFromName)(const char*);
float(SDL_scalbnf)(float,int);
void(SDL_PauseAudio)(int);
int(SDL_vsscanf)(const char*,const char*,__builtin_va_list);
struct _SDL_GameController*(SDL_GameControllerOpen)(int);
void*(SDL_malloc)(unsigned long);
char*(SDL_GameControllerMappingForIndex)(int);
int(SDL_GameControllerAddMapping)(const char*);
float(SDL_fabsf)(float);
int(SDL_GameControllerAddMappingsFromRW)(struct SDL_RWops*,int);
void(SDL_JoystickClose)(struct _SDL_Joystick*);
enum SDL_bool(SDL_JoystickGetAxisInitialState)(struct _SDL_Joystick*,int,signed short*);
int(SDL_JoystickNumAxes)(struct _SDL_Joystick*);
struct SDL_JoystickGUID(SDL_JoystickGetGUIDFromString)(const char*);
void(SDL_JoystickGetGUIDString)(struct SDL_JoystickGUID,char*,int);
enum SDL_JoystickType(SDL_JoystickGetType)(struct _SDL_Joystick*);
struct _SDL_Joystick*(SDL_JoystickFromInstanceID)(signed int);
char*(SDL_strrchr)(const char*,int);
int(SDL_setenv)(const char*,const char*,int);
void(SDL_SetWindowPosition)(struct SDL_Window*,int,int);
void(SDL_PauseAudioDevice)(unsigned int,int);
void(SDL_UnlockJoysticks)();
struct SDL_Cursor*(SDL_GetDefaultCursor)();
unsigned int(SDL_GetWindowID)(struct SDL_Window*);
double(SDL_asin)(double);
int(SDL_GetRenderDriverInfo)(int,struct SDL_RendererInfo*);
enum SDL_bool(SDL_GetRelativeMouseMode)();
int(SDL_CaptureMouse)(enum SDL_bool);
void*(SDL_GL_GetProcAddress)(const char*);
unsigned int(SDL_MasksToPixelFormatEnum)(int,unsigned int,unsigned int,unsigned int,unsigned int);
double(SDL_fabs)(double);
void(SDL_WarpMouseInWindow)(struct SDL_Window*,int,int);
unsigned int(SDL_GetRelativeMouseState)(int*,int*);
unsigned int(SDL_GetGlobalMouseState)(int*,int*);
unsigned int(SDL_GetMouseState)(int*,int*);
enum SDL_bool(SDL_IsScreenKeyboardShown)(struct SDL_Window*);
enum SDL_bool(SDL_HasScreenKeyboardSupport)();
void(SDL_StartTextInput)();
void*(SDL_GL_CreateContext)(struct SDL_Window*);
int(SDL_GetColorKey)(struct SDL_Surface*,unsigned int*);
enum SDL_Scancode(SDL_GetScancodeFromKey)(signed int);
signed int(SDL_GetKeyFromScancode)(enum SDL_Scancode);
void(SDL_SetModState)(enum SDL_Keymod);
enum SDL_bool(SDL_HasAVX2)();
enum SDL_bool(SDL_HasAVX)();
int(SDL_SetWindowOpacity)(struct SDL_Window*,float);
unsigned int(SDL_GetWindowFlags)(struct SDL_Window*);
enum SDL_bool(SDL_HasSSE42)();
enum SDL_bool(SDL_HasSSE41)();
enum SDL_bool(SDL_HasSSE2)();
enum SDL_bool(SDL_Has3DNow)();
int(SDL_RenderFillRects)(struct SDL_Renderer*,const struct SDL_Rect*,int);
enum SDL_bool(SDL_HasAltiVec)();
int(SDL_GetCPUCount)();
void(SDL_CloseAudioDevice)(unsigned int);
void(SDL_CloseAudio)();
int(SDL_GetWindowBordersSize)(struct SDL_Window*,int*,int*,int*,int*);
void(SDL_LockAudio)();
unsigned int(SDL_GetQueuedAudioSize)(unsigned int);
unsigned int(SDL_DequeueAudio)(unsigned int,void*,unsigned int);
const char*(SDL_GameControllerGetStringForButton)(enum SDL_GameControllerButton);
void(SDL_MixAudioFormat)(unsigned char*,const unsigned char*,unsigned short,unsigned int,int);
void(SDL_AudioStreamClear)(struct _SDL_AudioStream*);
int(SDL_AudioStreamFlush)(struct _SDL_AudioStream*);
unsigned int(SDL_TLSCreate)();
struct SDL_RWops*(SDL_RWFromFP)(struct _IO_FILE*,enum SDL_bool);
int(SDL_AudioStreamAvailable)(struct _SDL_AudioStream*);
int(SDL_AudioStreamGet)(struct _SDL_AudioStream*,void*,int);
int(SDL_TryLockMutex)(struct SDL_mutex*);
struct SDL_Texture*(SDL_CreateTexture)(struct SDL_Renderer*,unsigned int,int,int,int);
int(SDL_ConvertAudio)(struct SDL_AudioCVT*);
int(SDL_SetRenderTarget)(struct SDL_Renderer*,struct SDL_Texture*);
enum SDL_AudioStatus(SDL_GetAudioDeviceStatus)(unsigned int);
enum SDL_AudioStatus(SDL_GetAudioStatus)();
const char*(SDL_GetCurrentAudioDriver)();
int(SDL_GetNumAudioDrivers)();
enum SDL_bool(SDL_AtomicCASPtr)(void**,void*,void*);
void(SDL_DetachThread)(struct SDL_Thread*);
void(SDL_WaitThread)(struct SDL_Thread*,int*);
int(SDL_CondSignal)(struct SDL_cond*);
struct SDL_Surface*(SDL_CreateRGBSurfaceWithFormat)(unsigned int,int,int,int,unsigned int);
int(SDL_SemWait)(struct SDL_semaphore*);
struct SDL_semaphore*(SDL_CreateSemaphore)(unsigned int);
int(SDL_SemPost)(struct SDL_semaphore*);
int(SDL_vsnprintf)(char*,unsigned long,const char*,__builtin_va_list);
void*(SDL_AtomicGetPtr)(void**);
void*(SDL_AtomicSetPtr)(void**,void*);
enum SDL_bool(SDL_AtomicCAS)(struct SDL_atomic_t*,int,int);
enum SDL_bool(SDL_AtomicTryLock)(int*);
enum SDL_AssertState(*SDL_GetAssertionHandler(void**))(const struct SDL_AssertData*,void*);
enum SDL_AssertState(*SDL_GetDefaultAssertionHandler())(const struct SDL_AssertData*,void*);
void(SDL_FlushEvents)(unsigned int,unsigned int);
const char*(SDL_GetAudioDriver)(int);
int(SDL_LockSurface)(struct SDL_Surface*);
enum SDL_bool(SDL_IsShapedWindow)(const struct SDL_Window*);
void(SDL_GL_DeleteContext)(void*);
int(SDL_GL_GetSwapInterval)();
void(SDL_GL_GetDrawableSize)(struct SDL_Window*,int*,int*);
void*(SDL_GL_GetCurrentContext)();
int(SDL_GL_MakeCurrent)(struct SDL_Window*,void*);
const char*(SDL_GetKeyName)(signed int);
int(SDL_FillRects)(struct SDL_Surface*,const struct SDL_Rect*,int,unsigned int);
void(SDL_GL_UnloadLibrary)();
int(SDL_SetRelativeMouseMode)(enum SDL_bool);
void(SDL_DestroyWindow)(struct SDL_Window*);
int(SDL_GetWindowGammaRamp)(struct SDL_Window*,unsigned short*,unsigned short*,unsigned short*);
int(SDL_SetWindowGammaRamp)(struct SDL_Window*,const unsigned short*,const unsigned short*,const unsigned short*);
void(SDL_SetWindowGrab)(struct SDL_Window*,enum SDL_bool);
int(SDL_LowerBlit)(struct SDL_Surface*,struct SDL_Rect*,struct SDL_Surface*,struct SDL_Rect*);
struct SDL_Surface*(SDL_GetWindowSurface)(struct SDL_Window*);
int(SDL_SetWindowFullscreen)(struct SDL_Window*,unsigned int);
void(SDL_DestroyRenderer)(struct SDL_Renderer*);
void(SDL_MinimizeWindow)(struct SDL_Window*);
void(SDL_MaximizeWindow)(struct SDL_Window*);
char*(SDL_GetBasePath)();
void(SDL_SetWindowBordered)(struct SDL_Window*,enum SDL_bool);
void(SDL_GetWindowMaximumSize)(struct SDL_Window*,int*,int*);
int(SDL_isdigit)(int);
double(SDL_log)(double);
void(SDL_SetWindowMaximumSize)(struct SDL_Window*,int,int);
void(SDL_GetVersion)(struct SDL_version*);
void(SDL_SetWindowSize)(struct SDL_Window*,int,int);
void(SDL_GetWindowPosition)(struct SDL_Window*,int*,int*);
unsigned short(SDL_JoystickGetDeviceProductVersion)(int);
void(SDL_SetWindowIcon)(struct SDL_Window*,struct SDL_Surface*);
int(SDL_HapticNewEffect)(struct _SDL_Haptic*,union SDL_HapticEffect*);
float(SDL_ceilf)(float);
void(SDL_GetRGBA)(unsigned int,const struct SDL_PixelFormat*,unsigned char*,unsigned char*,unsigned char*,unsigned char*);
int(SDL_SetWindowDisplayMode)(struct SDL_Window*,const struct SDL_DisplayMode*);
int(SDL_GetWindowDisplayIndex)(struct SDL_Window*);
struct SDL_DisplayMode*(SDL_GetClosestDisplayMode)(int,const struct SDL_DisplayMode*,struct SDL_DisplayMode*);
int(SDL_GetDisplayMode)(int,int,struct SDL_DisplayMode*);
int(SDL_GetNumDisplayModes)(int);
int(SDL_GetDisplayUsableBounds)(int,struct SDL_Rect*);
int(SDL_GetDisplayDPI)(int,float*,float*,float*);
int(SDL_GetDisplayBounds)(int,struct SDL_Rect*);
float(SDL_powf)(float,float);
const char*(SDL_GetDisplayName)(int);
const char*(SDL_GetCurrentVideoDriver)();
unsigned int(SDL_ReadBE32)(struct SDL_RWops*);
int(SDL_VideoInit)(const char*);
int(SDL_GetNumVideoDrivers)();
int(SDL_GetRendererInfo)(struct SDL_Renderer*,struct SDL_RendererInfo*);
int(SDL_UpperBlit)(struct SDL_Surface*,const struct SDL_Rect*,struct SDL_Surface*,struct SDL_Rect*);
int(SDL_ConvertPixels)(int,int,unsigned int,const void*,int,unsigned int,void*,int);
struct SDL_Surface*(SDL_ConvertSurface)(struct SDL_Surface*,const struct SDL_PixelFormat*,unsigned int);
enum SDL_bool(SDL_SetClipRect)(struct SDL_Surface*,const struct SDL_Rect*);
int(SDL_SetSurfaceAlphaMod)(struct SDL_Surface*,unsigned char);
int(SDL_GetSurfaceColorMod)(struct SDL_Surface*,unsigned char*,unsigned char*,unsigned char*);
int(SDL_SetColorKey)(struct SDL_Surface*,int,unsigned int);
struct SDL_Surface*(SDL_LoadBMP_RW)(struct SDL_RWops*,int);
struct SDL_Surface*(SDL_CreateRGBSurfaceFrom)(void*,int,int,int,int,unsigned int,unsigned int,unsigned int,unsigned int);
struct SDL_Surface*(SDL_CreateRGBSurface)(unsigned int,int,int,int,unsigned int,unsigned int,unsigned int,unsigned int);
enum SDL_BlendMode(SDL_ComposeCustomBlendMode)(enum SDL_BlendFactor,enum SDL_BlendFactor,enum SDL_BlendOperation,enum SDL_BlendFactor,enum SDL_BlendFactor,enum SDL_BlendOperation);
void(SDL_DestroyCond)(struct SDL_cond*);
char*(SDL_lltoa)(signed long,char*,int);
struct SDL_cond*(SDL_CreateCond)();
unsigned long(SDL_WriteBE64)(struct SDL_RWops*,unsigned long);
unsigned long(SDL_WriteLE64)(struct SDL_RWops*,unsigned long);
const char*(SDL_GetPixelFormatName)(unsigned int);
int(SDL_memcmp)(const void*,const void*,unsigned long);
enum SDL_bool(SDL_JoystickGetAttached)(struct _SDL_Joystick*);
double(SDL_strtod)(const char*,char**);
int(SDL_RenderDrawPoints)(struct SDL_Renderer*,const struct SDL_Point*,int);
unsigned char(SDL_ReadU8)(struct SDL_RWops*);
int(SDL_HapticRumbleSupported)(struct _SDL_Haptic*);
int(SDL_snprintf)(char*,unsigned long,const char*,...);
signed int(SDL_JoystickGetDeviceInstanceID)(int);
void(SDL_LockAudioDevice)(unsigned int);
void(SDL_AddEventWatch)(int(*filter)(void*,union SDL_Event*),void*);
int(SDL_wcscmp)(const int*,const int*);
long(SDL_strtol)(const char*,char**,int);
int(SDL_OpenAudio)(struct SDL_AudioSpec*,struct SDL_AudioSpec*);
enum SDL_GameControllerButton(SDL_GameControllerGetButtonFromString)(const char*);
struct SDL_JoystickGUID(SDL_JoystickGetGUID)(struct _SDL_Joystick*);
struct SDL_Cursor*(SDL_CreateCursor)(const unsigned char*,const unsigned char*,int,int,int,int);
char*(SDL_strrev)(char*);
void(SDL_GameControllerUpdate)();
void(SDL_SetYUVConversionMode)(enum SDL_YUV_CONVERSION_MODE);
void*(SDL_SetWindowData)(struct SDL_Window*,const char*,void*);
float(SDL_atan2f)(float,float);
int(SDL_GetShapedWindowMode)(struct SDL_Window*,void*);
void(SDL_UnlockAudio)();
enum SDL_bool(SDL_EnclosePoints)(const struct SDL_Point*,int,const struct SDL_Rect*,struct SDL_Rect*);
void*(SDL_memmove)(void*,const void*,unsigned long);
char*(SDL_iconv_string)(const char*,const char*,const char*,unsigned long);
signed long(SDL_strtoll)(const char*,char**,int);
int(SDL_CreateWindowAndRenderer)(int,int,unsigned int,struct SDL_Window**,struct SDL_Renderer**);
float(SDL_fmodf)(float,float);
int(SDL_HapticPause)(struct _SDL_Haptic*);
struct SDL_Window*(SDL_CreateWindowFrom)(const void*);
char*(SDL_strstr)(const char*,const char*);
int(SDL_LockMutex)(struct SDL_mutex*);
struct SDL_JoystickGUID(SDL_JoystickGetDeviceGUID)(int);
int(SDL_SaveAllDollarTemplates)(struct SDL_RWops*);
char*(SDL_uitoa)(unsigned int,char*,int);
unsigned int(SDL_RegisterEvents)(int);
void(SDL_GetWindowSize)(struct SDL_Window*,int*,int*);
int(SDL_SetPixelFormatPalette)(struct SDL_PixelFormat*,struct SDL_Palette*);
float(SDL_GetWindowBrightness)(struct SDL_Window*);
char*(SDL_GetClipboardText)();
unsigned int(SDL_OpenAudioDevice)(const char*,int,const struct SDL_AudioSpec*,struct SDL_AudioSpec*,int);
int(SDL_SetClipboardText)(const char*);
int(SDL_GetSurfaceAlphaMod)(struct SDL_Surface*,unsigned char*);
int(SDL_GetNumAllocations)();
void(SDL_LogResetPriorities)();
double(SDL_tan)(double);
int(SDL_SetSurfacePalette)(struct SDL_Surface*,struct SDL_Palette*);
void(SDL_DestroyTexture)(struct SDL_Texture*);
enum SDL_JoystickType(SDL_JoystickGetDeviceType)(int);
int(SDL_RenderReadPixels)(struct SDL_Renderer*,const struct SDL_Rect*,unsigned int,void*,int);
void(SDL_FreeRW)(struct SDL_RWops*);
void(SDL_AtomicUnlock)(int*);
int(SDL_JoystickNumBalls)(struct _SDL_Joystick*);
int(SDL_GameControllerNumMappings)();
int(SDL_SetWindowBrightness)(struct SDL_Window*,float);
int(SDL_strncasecmp)(const char*,const char*,unsigned long);
double(SDL_atan2)(double,double);
struct _SDL_Joystick*(SDL_GameControllerGetJoystick)(struct _SDL_GameController*);
unsigned long(SDL_GetPerformanceFrequency)();
int(SDL_GetTextureBlendMode)(struct SDL_Texture*,enum SDL_BlendMode*);
struct SDL_RWops*(SDL_RWFromFile)(const char*,const char*);
unsigned short(SDL_ReadBE16)(struct SDL_RWops*);
float(SDL_tanf)(float);
float(SDL_acosf)(float);
void(SDL_LogInfo)(int,const char*,...);
float(SDL_floorf)(float);
char*(SDL_GameControllerMappingForGUID)(struct SDL_JoystickGUID);
int(SDL_GetNumVideoDisplays)();
void(SDL_LogWarn)(int,const char*,...);
double(SDL_fmod)(double,double);
int(SDL_AudioStreamPut)(struct _SDL_AudioStream*,const void*,int);
int(SDL_HapticStopEffect)(struct _SDL_Haptic*,int);
void(SDL_SetMainReady)();
void(SDL_FreeSurface)(struct SDL_Surface*);
struct _SDL_Haptic*(SDL_HapticOpenFromJoystick)(struct _SDL_Joystick*);
unsigned int(SDL_MapRGBA)(const struct SDL_PixelFormat*,unsigned char,unsigned char,unsigned char,unsigned char);
void(SDL_free)(void*);
unsigned long(SDL_strlcpy)(char*,const char*,unsigned long);
char*(SDL_strupr)(char*);
double(SDL_sqrt)(double);
int(SDL_HapticIndex)(struct _SDL_Haptic*);
unsigned long(SDL_WriteBE32)(struct SDL_RWops*,unsigned int);
struct SDL_Palette*(SDL_AllocPalette)(int);
]])
local CLIB = ffi.load(_G.FFI_LIB or "SDL2")
local library = {}
library = {
HasNEON = CLIB.SDL_HasNEON,
HapticStopAll = CLIB.SDL_HapticStopAll,
FlushEvent = CLIB.SDL_FlushEvent,
ceil = CLIB.SDL_ceil,
FreeAudioStream = CLIB.SDL_FreeAudioStream,
DestroySemaphore = CLIB.SDL_DestroySemaphore,
SetPaletteColors = CLIB.SDL_SetPaletteColors,
GetWindowPixelFormat = CLIB.SDL_GetWindowPixelFormat,
HideWindow = CLIB.SDL_HideWindow,
ShowCursor = CLIB.SDL_ShowCursor,
CreateTextureFromSurface = CLIB.SDL_CreateTextureFromSurface,
WriteBE16 = CLIB.SDL_WriteBE16,
UnionRect = CLIB.SDL_UnionRect,
SemValue = CLIB.SDL_SemValue,
ReadBE64 = CLIB.SDL_ReadBE64,
SaveDollarTemplate = CLIB.SDL_SaveDollarTemplate,
SetError = CLIB.SDL_SetError,
log10 = CLIB.SDL_log10,
JoystickName = CLIB.SDL_JoystickName,
UpdateWindowSurfaceRects = CLIB.SDL_UpdateWindowSurfaceRects,
AtomicGet = CLIB.SDL_AtomicGet,
CreateSystemCursor = CLIB.SDL_CreateSystemCursor,
IsScreenSaverEnabled = CLIB.SDL_IsScreenSaverEnabled,
Delay = CLIB.SDL_Delay,
GL_GetAttribute = CLIB.SDL_GL_GetAttribute,
wcslcpy = CLIB.SDL_wcslcpy,
GameControllerGetAxis = CLIB.SDL_GameControllerGetAxis,
atof = CLIB.SDL_atof,
AddHintCallback = CLIB.SDL_AddHintCallback,
logf = CLIB.SDL_logf,
GetClipRect = CLIB.SDL_GetClipRect,
GetYUVConversionModeForResolution = CLIB.SDL_GetYUVConversionModeForResolution,
ThreadID = CLIB.SDL_ThreadID,
GetKeyboardFocus = CLIB.SDL_GetKeyboardFocus,
strcmp = CLIB.SDL_strcmp,
sscanf = CLIB.SDL_sscanf,
SemTryWait = CLIB.SDL_SemTryWait,
calloc = CLIB.SDL_calloc,
CreateShapedWindow = CLIB.SDL_CreateShapedWindow,
iconv_close = CLIB.SDL_iconv_close,
MemoryBarrierReleaseFunction = CLIB.SDL_MemoryBarrierReleaseFunction,
GetWindowWMInfo = CLIB.SDL_GetWindowWMInfo,
SetWindowShape = CLIB.SDL_SetWindowShape,
MemoryBarrierAcquireFunction = CLIB.SDL_MemoryBarrierAcquireFunction,
LogDebug = CLIB.SDL_LogDebug,
JoystickNumHats = CLIB.SDL_JoystickNumHats,
GetGrabbedWindow = CLIB.SDL_GetGrabbedWindow,
UnlockMutex = CLIB.SDL_UnlockMutex,
GameControllerGetAttached = CLIB.SDL_GameControllerGetAttached,
HasSSE = CLIB.SDL_HasSSE,
realloc = CLIB.SDL_realloc,
GetAssertionReport = CLIB.SDL_GetAssertionReport,
LogSetOutputFunction = CLIB.SDL_LogSetOutputFunction,
GetVideoDriver = CLIB.SDL_GetVideoDriver,
LoadFile_RW = CLIB.SDL_LoadFile_RW,
HapticRunEffect = CLIB.SDL_HapticRunEffect,
RenderCopyEx = CLIB.SDL_RenderCopyEx,
GL_SetSwapInterval = CLIB.SDL_GL_SetSwapInterval,
ClearHints = CLIB.SDL_ClearHints,
atan = CLIB.SDL_atan,
LockTexture = CLIB.SDL_LockTexture,
JoystickOpen = CLIB.SDL_JoystickOpen,
JoystickEventState = CLIB.SDL_JoystickEventState,
WasInit = CLIB.SDL_WasInit,
iconv_open = CLIB.SDL_iconv_open,
strtoull = CLIB.SDL_strtoull,
SaveBMP_RW = CLIB.SDL_SaveBMP_RW,
ResetAssertionReport = CLIB.SDL_ResetAssertionReport,
GetMouseFocus = CLIB.SDL_GetMouseFocus,
ClearQueuedAudio = CLIB.SDL_ClearQueuedAudio,
SetTextInputRect = CLIB.SDL_SetTextInputRect,
GetKeyboardState = CLIB.SDL_GetKeyboardState,
GL_ResetAttributes = CLIB.SDL_GL_ResetAttributes,
HapticNumEffects = CLIB.SDL_HapticNumEffects,
RaiseWindow = CLIB.SDL_RaiseWindow,
PixelFormatEnumToMasks = CLIB.SDL_PixelFormatEnumToMasks,
GetRenderDrawColor = CLIB.SDL_GetRenderDrawColor,
GameControllerFromInstanceID = CLIB.SDL_GameControllerFromInstanceID,
JoystickGetDeviceVendor = CLIB.SDL_JoystickGetDeviceVendor,
JoystickGetButton = CLIB.SDL_JoystickGetButton,
SetWindowHitTest = CLIB.SDL_SetWindowHitTest,
WarpMouseGlobal = CLIB.SDL_WarpMouseGlobal,
PeepEvents = CLIB.SDL_PeepEvents,
FillRect = CLIB.SDL_FillRect,
AtomicLock = CLIB.SDL_AtomicLock,
GetSurfaceBlendMode = CLIB.SDL_GetSurfaceBlendMode,
JoystickNameForIndex = CLIB.SDL_JoystickNameForIndex,
GetSystemRAM = CLIB.SDL_GetSystemRAM,
wcslcat = CLIB.SDL_wcslcat,
SemWaitTimeout = CLIB.SDL_SemWaitTimeout,
CreateRGBSurfaceWithFormatFrom = CLIB.SDL_CreateRGBSurfaceWithFormatFrom,
FreeCursor = CLIB.SDL_FreeCursor,
CreateColorCursor = CLIB.SDL_CreateColorCursor,
sqrtf = CLIB.SDL_sqrtf,
cos = CLIB.SDL_cos,
NumJoysticks = CLIB.SDL_NumJoysticks,
GameControllerMapping = CLIB.SDL_GameControllerMapping,
memcpy = CLIB.SDL_memcpy,
GetRevision = CLIB.SDL_GetRevision,
VideoQuit = CLIB.SDL_VideoQuit,
FreeWAV = CLIB.SDL_FreeWAV,
scalbn = CLIB.SDL_scalbn,
GL_ExtensionSupported = CLIB.SDL_GL_ExtensionSupported,
strncmp = CLIB.SDL_strncmp,
GameControllerGetVendor = CLIB.SDL_GameControllerGetVendor,
HasRDTSC = CLIB.SDL_HasRDTSC,
RenderSetClipRect = CLIB.SDL_RenderSetClipRect,
floor = CLIB.SDL_floor,
GL_LoadLibrary = CLIB.SDL_GL_LoadLibrary,
SetSurfaceBlendMode = CLIB.SDL_SetSurfaceBlendMode,
tolower = CLIB.SDL_tolower,
ultoa = CLIB.SDL_ultoa,
JoystickGetDeviceProduct = CLIB.SDL_JoystickGetDeviceProduct,
AllocFormat = CLIB.SDL_AllocFormat,
GetThreadName = CLIB.SDL_GetThreadName,
ReportAssertion = CLIB.SDL_ReportAssertion,
StopTextInput = CLIB.SDL_StopTextInput,
wcslen = CLIB.SDL_wcslen,
abs = CLIB.SDL_abs,
SetTextureAlphaMod = CLIB.SDL_SetTextureAlphaMod,
CalculateGammaRamp = CLIB.SDL_CalculateGammaRamp,
GetCurrentDisplayMode = CLIB.SDL_GetCurrentDisplayMode,
AudioQuit = CLIB.SDL_AudioQuit,
GameControllerClose = CLIB.SDL_GameControllerClose,
GetRGB = CLIB.SDL_GetRGB,
SetSurfaceColorMod = CLIB.SDL_SetSurfaceColorMod,
GetNumAudioDevices = CLIB.SDL_GetNumAudioDevices,
strtoul = CLIB.SDL_strtoul,
SetWindowInputFocus = CLIB.SDL_SetWindowInputFocus,
pow = CLIB.SDL_pow,
SetWindowResizable = CLIB.SDL_SetWindowResizable,
GL_SwapWindow = CLIB.SDL_GL_SwapWindow,
JoystickGetProduct = CLIB.SDL_JoystickGetProduct,
PushEvent = CLIB.SDL_PushEvent,
EnableScreenSaver = CLIB.SDL_EnableScreenSaver,
GetYUVConversionMode = CLIB.SDL_GetYUVConversionMode,
GetWindowGrab = CLIB.SDL_GetWindowGrab,
RWFromMem = CLIB.SDL_RWFromMem,
ulltoa = CLIB.SDL_ulltoa,
MixAudio = CLIB.SDL_MixAudio,
CreateWindow = CLIB.SDL_CreateWindow,
HapticRumblePlay = CLIB.SDL_HapticRumblePlay,
GetCPUCacheLineSize = CLIB.SDL_GetCPUCacheLineSize,
LogSetAllPriority = CLIB.SDL_LogSetAllPriority,
ShowWindow = CLIB.SDL_ShowWindow,
strlwr = CLIB.SDL_strlwr,
GetWindowTitle = CLIB.SDL_GetWindowTitle,
GameControllerNameForIndex = CLIB.SDL_GameControllerNameForIndex,
IntersectRectAndLine = CLIB.SDL_IntersectRectAndLine,
GetCursor = CLIB.SDL_GetCursor,
strdup = CLIB.SDL_strdup,
DestroyMutex = CLIB.SDL_DestroyMutex,
HapticSetAutocenter = CLIB.SDL_HapticSetAutocenter,
LoadDollarTemplates = CLIB.SDL_LoadDollarTemplates,
SetWindowTitle = CLIB.SDL_SetWindowTitle,
toupper = CLIB.SDL_toupper,
GetNumRenderDrivers = CLIB.SDL_GetNumRenderDrivers,
MapRGB = CLIB.SDL_MapRGB,
RenderGetMetalLayer = CLIB.SDL_RenderGetMetalLayer,
GetMemoryFunctions = CLIB.SDL_GetMemoryFunctions,
GL_GetCurrentWindow = CLIB.SDL_GL_GetCurrentWindow,
CondWait = CLIB.SDL_CondWait,
acos = CLIB.SDL_acos,
cosf = CLIB.SDL_cosf,
LogGetPriority = CLIB.SDL_LogGetPriority,
ReadLE32 = CLIB.SDL_ReadLE32,
SetRenderDrawColor = CLIB.SDL_SetRenderDrawColor,
ReadLE16 = CLIB.SDL_ReadLE16,
memset = CLIB.SDL_memset,
GetRendererOutputSize = CLIB.SDL_GetRendererOutputSize,
GetError = CLIB.SDL_GetError,
SetWindowMinimumSize = CLIB.SDL_SetWindowMinimumSize,
HasClipboardText = CLIB.SDL_HasClipboardText,
SetMemoryFunctions = CLIB.SDL_SetMemoryFunctions,
GetAudioDeviceName = CLIB.SDL_GetAudioDeviceName,
BuildAudioCVT = CLIB.SDL_BuildAudioCVT,
RenderClear = CLIB.SDL_RenderClear,
JoystickGetHat = CLIB.SDL_JoystickGetHat,
itoa = CLIB.SDL_itoa,
HapticClose = CLIB.SDL_HapticClose,
GameControllerGetAxisFromString = CLIB.SDL_GameControllerGetAxisFromString,
GetTouchFinger = CLIB.SDL_GetTouchFinger,
RemoveTimer = CLIB.SDL_RemoveTimer,
GetModState = CLIB.SDL_GetModState,
DuplicateSurface = CLIB.SDL_DuplicateSurface,
GetScancodeFromName = CLIB.SDL_GetScancodeFromName,
AtomicAdd = CLIB.SDL_AtomicAdd,
GetRevisionNumber = CLIB.SDL_GetRevisionNumber,
ConvertSurfaceFormat = CLIB.SDL_ConvertSurfaceFormat,
LockJoysticks = CLIB.SDL_LockJoysticks,
GameControllerGetButton = CLIB.SDL_GameControllerGetButton,
strlen = CLIB.SDL_strlen,
GetHintBoolean = CLIB.SDL_GetHintBoolean,
GetNumTouchDevices = CLIB.SDL_GetNumTouchDevices,
JoystickGetAxis = CLIB.SDL_JoystickGetAxis,
GetWindowData = CLIB.SDL_GetWindowData,
sin = CLIB.SDL_sin,
HasIntersection = CLIB.SDL_HasIntersection,
IsGameController = CLIB.SDL_IsGameController,
SetThreadPriority = CLIB.SDL_SetThreadPriority,
HapticQuery = CLIB.SDL_HapticQuery,
GetScancodeName = CLIB.SDL_GetScancodeName,
GameControllerGetProductVersion = CLIB.SDL_GameControllerGetProductVersion,
atoi = CLIB.SDL_atoi,
UnlockSurface = CLIB.SDL_UnlockSurface,
HasSSE3 = CLIB.SDL_HasSSE3,
GL_SetAttribute = CLIB.SDL_GL_SetAttribute,
getenv = CLIB.SDL_getenv,
HapticOpened = CLIB.SDL_HapticOpened,
ltoa = CLIB.SDL_ltoa,
HapticDestroyEffect = CLIB.SDL_HapticDestroyEffect,
GetWindowMinimumSize = CLIB.SDL_GetWindowMinimumSize,
strlcat = CLIB.SDL_strlcat,
IsTextInputActive = CLIB.SDL_IsTextInputActive,
GetNumTouchFingers = CLIB.SDL_GetNumTouchFingers,
GL_UnbindTexture = CLIB.SDL_GL_UnbindTexture,
Log = CLIB.SDL_Log,
LogVerbose = CLIB.SDL_LogVerbose,
ReadLE64 = CLIB.SDL_ReadLE64,
GetWindowFromID = CLIB.SDL_GetWindowFromID,
GetDesktopDisplayMode = CLIB.SDL_GetDesktopDisplayMode,
HapticGetEffectStatus = CLIB.SDL_HapticGetEffectStatus,
JoystickGetProductVersion = CLIB.SDL_JoystickGetProductVersion,
LowerBlitScaled = CLIB.SDL_LowerBlitScaled,
FreePalette = CLIB.SDL_FreePalette,
GetRenderTarget = CLIB.SDL_GetRenderTarget,
IntersectRect = CLIB.SDL_IntersectRect,
strcasecmp = CLIB.SDL_strcasecmp,
SoftStretch = CLIB.SDL_SoftStretch,
CreateThread = CLIB.SDL_CreateThread,
JoystickNumButtons = CLIB.SDL_JoystickNumButtons,
AddTimer = CLIB.SDL_AddTimer,
RenderSetViewport = CLIB.SDL_RenderSetViewport,
GetWindowDisplayMode = CLIB.SDL_GetWindowDisplayMode,
UpdateWindowSurface = CLIB.SDL_UpdateWindowSurface,
JoystickGetVendor = CLIB.SDL_JoystickGetVendor,
asinf = CLIB.SDL_asinf,
CreateMutex = CLIB.SDL_CreateMutex,
HapticEffectSupported = CLIB.SDL_HapticEffectSupported,
GetThreadID = CLIB.SDL_GetThreadID,
TLSGet = CLIB.SDL_TLSGet,
EventState = CLIB.SDL_EventState,
Quit = CLIB.SDL_Quit,
QuitSubSystem = CLIB.SDL_QuitSubSystem,
InitSubSystem = CLIB.SDL_InitSubSystem,
Init = CLIB.SDL_Init,
WriteLE32 = CLIB.SDL_WriteLE32,
ClearError = CLIB.SDL_ClearError,
SetHintWithPriority = CLIB.SDL_SetHintWithPriority,
GetTicks = CLIB.SDL_GetTicks,
RenderGetMetalCommandEncoder = CLIB.SDL_RenderGetMetalCommandEncoder,
GL_BindTexture = CLIB.SDL_GL_BindTexture,
RestoreWindow = CLIB.SDL_RestoreWindow,
AllocRW = CLIB.SDL_AllocRW,
RenderPresent = CLIB.SDL_RenderPresent,
RenderCopy = CLIB.SDL_RenderCopy,
HasMMX = CLIB.SDL_HasMMX,
RenderDrawRects = CLIB.SDL_RenderDrawRects,
RenderDrawRect = CLIB.SDL_RenderDrawRect,
RenderDrawLines = CLIB.SDL_RenderDrawLines,
RenderDrawLine = CLIB.SDL_RenderDrawLine,
utf8strlen = CLIB.SDL_utf8strlen,
utf8strlcpy = CLIB.SDL_utf8strlcpy,
RenderDrawPoint = CLIB.SDL_RenderDrawPoint,
GetRenderDrawBlendMode = CLIB.SDL_GetRenderDrawBlendMode,
LoadFunction = CLIB.SDL_LoadFunction,
GetPerformanceCounter = CLIB.SDL_GetPerformanceCounter,
RenderGetScale = CLIB.SDL_RenderGetScale,
RenderSetScale = CLIB.SDL_RenderSetScale,
RenderIsClipEnabled = CLIB.SDL_RenderIsClipEnabled,
GameControllerGetBindForAxis = CLIB.SDL_GameControllerGetBindForAxis,
Error = CLIB.SDL_Error,
RenderGetClipRect = CLIB.SDL_RenderGetClipRect,
iconv = CLIB.SDL_iconv,
RenderGetViewport = CLIB.SDL_RenderGetViewport,
RenderGetIntegerScale = CLIB.SDL_RenderGetIntegerScale,
RenderSetIntegerScale = CLIB.SDL_RenderSetIntegerScale,
RenderGetLogicalSize = CLIB.SDL_RenderGetLogicalSize,
RenderSetLogicalSize = CLIB.SDL_RenderSetLogicalSize,
LoadWAV_RW = CLIB.SDL_LoadWAV_RW,
RenderTargetSupported = CLIB.SDL_RenderTargetSupported,
GameControllerGetBindForButton = CLIB.SDL_GameControllerGetBindForButton,
UpdateYUVTexture = CLIB.SDL_UpdateYUVTexture,
UpdateTexture = CLIB.SDL_UpdateTexture,
SetTextureBlendMode = CLIB.SDL_SetTextureBlendMode,
GetTextureAlphaMod = CLIB.SDL_GetTextureAlphaMod,
FreeFormat = CLIB.SDL_FreeFormat,
GetTextureColorMod = CLIB.SDL_GetTextureColorMod,
SetTextureColorMod = CLIB.SDL_SetTextureColorMod,
QueryTexture = CLIB.SDL_QueryTexture,
NewAudioStream = CLIB.SDL_NewAudioStream,
UpperBlitScaled = CLIB.SDL_UpperBlitScaled,
UnlockTexture = CLIB.SDL_UnlockTexture,
CreateSoftwareRenderer = CLIB.SDL_CreateSoftwareRenderer,
CreateRenderer = CLIB.SDL_CreateRenderer,
SetCursor = CLIB.SDL_SetCursor,
GetPowerInfo = CLIB.SDL_GetPowerInfo,
ShowSimpleMessageBox = CLIB.SDL_ShowSimpleMessageBox,
DisableScreenSaver = CLIB.SDL_DisableScreenSaver,
ShowMessageBox = CLIB.SDL_ShowMessageBox,
LogGetOutputFunction = CLIB.SDL_LogGetOutputFunction,
LogMessageV = CLIB.SDL_LogMessageV,
JoystickUpdate = CLIB.SDL_JoystickUpdate,
LogMessage = CLIB.SDL_LogMessage,
LogCritical = CLIB.SDL_LogCritical,
sinf = CLIB.SDL_sinf,
LogError = CLIB.SDL_LogError,
WriteU8 = CLIB.SDL_WriteU8,
strchr = CLIB.SDL_strchr,
LogSetPriority = CLIB.SDL_LogSetPriority,
HapticNumEffectsPlaying = CLIB.SDL_HapticNumEffectsPlaying,
LoadObject = CLIB.SDL_LoadObject,
DelHintCallback = CLIB.SDL_DelHintCallback,
GetHint = CLIB.SDL_GetHint,
SetHint = CLIB.SDL_SetHint,
SetRenderDrawBlendMode = CLIB.SDL_SetRenderDrawBlendMode,
HapticRumbleStop = CLIB.SDL_HapticRumbleStop,
HapticRumbleInit = CLIB.SDL_HapticRumbleInit,
JoystickCurrentPowerLevel = CLIB.SDL_JoystickCurrentPowerLevel,
HapticUnpause = CLIB.SDL_HapticUnpause,
copysignf = CLIB.SDL_copysignf,
AtomicSet = CLIB.SDL_AtomicSet,
HapticSetGain = CLIB.SDL_HapticSetGain,
HapticNumAxes = CLIB.SDL_HapticNumAxes,
JoystickGetBall = CLIB.SDL_JoystickGetBall,
UnloadObject = CLIB.SDL_UnloadObject,
JoystickIsHaptic = CLIB.SDL_JoystickIsHaptic,
PumpEvents = CLIB.SDL_PumpEvents,
CondWaitTimeout = CLIB.SDL_CondWaitTimeout,
HapticOpenFromMouse = CLIB.SDL_HapticOpenFromMouse,
MouseIsHaptic = CLIB.SDL_MouseIsHaptic,
HapticOpen = CLIB.SDL_HapticOpen,
HapticName = CLIB.SDL_HapticName,
NumHaptics = CLIB.SDL_NumHaptics,
atanf = CLIB.SDL_atanf,
GetPrefPath = CLIB.SDL_GetPrefPath,
RWFromConstMem = CLIB.SDL_RWFromConstMem,
isspace = CLIB.SDL_isspace,
CondBroadcast = CLIB.SDL_CondBroadcast,
DelEventWatch = CLIB.SDL_DelEventWatch,
HapticUpdateEffect = CLIB.SDL_HapticUpdateEffect,
GetEventFilter = CLIB.SDL_GetEventFilter,
SetEventFilter = CLIB.SDL_SetEventFilter,
WaitEventTimeout = CLIB.SDL_WaitEventTimeout,
WaitEvent = CLIB.SDL_WaitEvent,
GetWindowOpacity = CLIB.SDL_GetWindowOpacity,
WriteLE16 = CLIB.SDL_WriteLE16,
PollEvent = CLIB.SDL_PollEvent,
SetAssertionHandler = CLIB.SDL_SetAssertionHandler,
copysign = CLIB.SDL_copysign,
HasEvents = CLIB.SDL_HasEvents,
SetWindowModalFor = CLIB.SDL_SetWindowModalFor,
AudioInit = CLIB.SDL_AudioInit,
HasEvent = CLIB.SDL_HasEvent,
JoystickInstanceID = CLIB.SDL_JoystickInstanceID,
RecordGesture = CLIB.SDL_RecordGesture,
GetTouchDevice = CLIB.SDL_GetTouchDevice,
FilterEvents = CLIB.SDL_FilterEvents,
GetRenderer = CLIB.SDL_GetRenderer,
QueueAudio = CLIB.SDL_QueueAudio,
GameControllerGetStringForAxis = CLIB.SDL_GameControllerGetStringForAxis,
SetSurfaceRLE = CLIB.SDL_SetSurfaceRLE,
log10f = CLIB.SDL_log10f,
GameControllerEventState = CLIB.SDL_GameControllerEventState,
GetPlatform = CLIB.SDL_GetPlatform,
RenderFillRect = CLIB.SDL_RenderFillRect,
GameControllerGetProduct = CLIB.SDL_GameControllerGetProduct,
UnlockAudioDevice = CLIB.SDL_UnlockAudioDevice,
GameControllerName = CLIB.SDL_GameControllerName,
GetKeyFromName = CLIB.SDL_GetKeyFromName,
scalbnf = CLIB.SDL_scalbnf,
PauseAudio = CLIB.SDL_PauseAudio,
vsscanf = CLIB.SDL_vsscanf,
GameControllerOpen = CLIB.SDL_GameControllerOpen,
malloc = CLIB.SDL_malloc,
GameControllerMappingForIndex = CLIB.SDL_GameControllerMappingForIndex,
GameControllerAddMapping = CLIB.SDL_GameControllerAddMapping,
fabsf = CLIB.SDL_fabsf,
GameControllerAddMappingsFromRW = CLIB.SDL_GameControllerAddMappingsFromRW,
JoystickClose = CLIB.SDL_JoystickClose,
JoystickGetAxisInitialState = CLIB.SDL_JoystickGetAxisInitialState,
JoystickNumAxes = CLIB.SDL_JoystickNumAxes,
JoystickGetGUIDFromString = CLIB.SDL_JoystickGetGUIDFromString,
JoystickGetGUIDString = CLIB.SDL_JoystickGetGUIDString,
JoystickGetType = CLIB.SDL_JoystickGetType,
JoystickFromInstanceID = CLIB.SDL_JoystickFromInstanceID,
strrchr = CLIB.SDL_strrchr,
setenv = CLIB.SDL_setenv,
SetWindowPosition = CLIB.SDL_SetWindowPosition,
PauseAudioDevice = CLIB.SDL_PauseAudioDevice,
UnlockJoysticks = CLIB.SDL_UnlockJoysticks,
GetDefaultCursor = CLIB.SDL_GetDefaultCursor,
GetWindowID = CLIB.SDL_GetWindowID,
asin = CLIB.SDL_asin,
GetRenderDriverInfo = CLIB.SDL_GetRenderDriverInfo,
GetRelativeMouseMode = CLIB.SDL_GetRelativeMouseMode,
CaptureMouse = CLIB.SDL_CaptureMouse,
GL_GetProcAddress = CLIB.SDL_GL_GetProcAddress,
MasksToPixelFormatEnum = CLIB.SDL_MasksToPixelFormatEnum,
fabs = CLIB.SDL_fabs,
WarpMouseInWindow = CLIB.SDL_WarpMouseInWindow,
GetRelativeMouseState = CLIB.SDL_GetRelativeMouseState,
GetGlobalMouseState = CLIB.SDL_GetGlobalMouseState,
GetMouseState = CLIB.SDL_GetMouseState,
IsScreenKeyboardShown = CLIB.SDL_IsScreenKeyboardShown,
HasScreenKeyboardSupport = CLIB.SDL_HasScreenKeyboardSupport,
StartTextInput = CLIB.SDL_StartTextInput,
GL_CreateContext = CLIB.SDL_GL_CreateContext,
GetColorKey = CLIB.SDL_GetColorKey,
GetScancodeFromKey = CLIB.SDL_GetScancodeFromKey,
GetKeyFromScancode = CLIB.SDL_GetKeyFromScancode,
SetModState = CLIB.SDL_SetModState,
HasAVX2 = CLIB.SDL_HasAVX2,
HasAVX = CLIB.SDL_HasAVX,
SetWindowOpacity = CLIB.SDL_SetWindowOpacity,
GetWindowFlags = CLIB.SDL_GetWindowFlags,
HasSSE42 = CLIB.SDL_HasSSE42,
HasSSE41 = CLIB.SDL_HasSSE41,
HasSSE2 = CLIB.SDL_HasSSE2,
Has3DNow = CLIB.SDL_Has3DNow,
RenderFillRects = CLIB.SDL_RenderFillRects,
HasAltiVec = CLIB.SDL_HasAltiVec,
GetCPUCount = CLIB.SDL_GetCPUCount,
CloseAudioDevice = CLIB.SDL_CloseAudioDevice,
CloseAudio = CLIB.SDL_CloseAudio,
GetWindowBordersSize = CLIB.SDL_GetWindowBordersSize,
LockAudio = CLIB.SDL_LockAudio,
GetQueuedAudioSize = CLIB.SDL_GetQueuedAudioSize,
DequeueAudio = CLIB.SDL_DequeueAudio,
GameControllerGetStringForButton = CLIB.SDL_GameControllerGetStringForButton,
MixAudioFormat = CLIB.SDL_MixAudioFormat,
AudioStreamClear = CLIB.SDL_AudioStreamClear,
AudioStreamFlush = CLIB.SDL_AudioStreamFlush,
TLSCreate = CLIB.SDL_TLSCreate,
RWFromFP = CLIB.SDL_RWFromFP,
AudioStreamAvailable = CLIB.SDL_AudioStreamAvailable,
AudioStreamGet = CLIB.SDL_AudioStreamGet,
TryLockMutex = CLIB.SDL_TryLockMutex,
CreateTexture = CLIB.SDL_CreateTexture,
ConvertAudio = CLIB.SDL_ConvertAudio,
SetRenderTarget = CLIB.SDL_SetRenderTarget,
GetAudioDeviceStatus = CLIB.SDL_GetAudioDeviceStatus,
GetAudioStatus = CLIB.SDL_GetAudioStatus,
GetCurrentAudioDriver = CLIB.SDL_GetCurrentAudioDriver,
GetNumAudioDrivers = CLIB.SDL_GetNumAudioDrivers,
AtomicCASPtr = CLIB.SDL_AtomicCASPtr,
DetachThread = CLIB.SDL_DetachThread,
WaitThread = CLIB.SDL_WaitThread,
CondSignal = CLIB.SDL_CondSignal,
CreateRGBSurfaceWithFormat = CLIB.SDL_CreateRGBSurfaceWithFormat,
SemWait = CLIB.SDL_SemWait,
CreateSemaphore = CLIB.SDL_CreateSemaphore,
SemPost = CLIB.SDL_SemPost,
vsnprintf = CLIB.SDL_vsnprintf,
AtomicGetPtr = CLIB.SDL_AtomicGetPtr,
AtomicSetPtr = CLIB.SDL_AtomicSetPtr,
AtomicCAS = CLIB.SDL_AtomicCAS,
AtomicTryLock = CLIB.SDL_AtomicTryLock,
GetAssertionHandler = CLIB.SDL_GetAssertionHandler,
GetDefaultAssertionHandler = CLIB.SDL_GetDefaultAssertionHandler,
FlushEvents = CLIB.SDL_FlushEvents,
GetAudioDriver = CLIB.SDL_GetAudioDriver,
LockSurface = CLIB.SDL_LockSurface,
IsShapedWindow = CLIB.SDL_IsShapedWindow,
GL_DeleteContext = CLIB.SDL_GL_DeleteContext,
GL_GetSwapInterval = CLIB.SDL_GL_GetSwapInterval,
GL_GetDrawableSize = CLIB.SDL_GL_GetDrawableSize,
GL_GetCurrentContext = CLIB.SDL_GL_GetCurrentContext,
GL_MakeCurrent = CLIB.SDL_GL_MakeCurrent,
GetKeyName = CLIB.SDL_GetKeyName,
FillRects = CLIB.SDL_FillRects,
GL_UnloadLibrary = CLIB.SDL_GL_UnloadLibrary,
SetRelativeMouseMode = CLIB.SDL_SetRelativeMouseMode,
DestroyWindow = CLIB.SDL_DestroyWindow,
GetWindowGammaRamp = CLIB.SDL_GetWindowGammaRamp,
SetWindowGammaRamp = CLIB.SDL_SetWindowGammaRamp,
SetWindowGrab = CLIB.SDL_SetWindowGrab,
LowerBlit = CLIB.SDL_LowerBlit,
GetWindowSurface = CLIB.SDL_GetWindowSurface,
SetWindowFullscreen = CLIB.SDL_SetWindowFullscreen,
DestroyRenderer = CLIB.SDL_DestroyRenderer,
MinimizeWindow = CLIB.SDL_MinimizeWindow,
MaximizeWindow = CLIB.SDL_MaximizeWindow,
GetBasePath = CLIB.SDL_GetBasePath,
SetWindowBordered = CLIB.SDL_SetWindowBordered,
GetWindowMaximumSize = CLIB.SDL_GetWindowMaximumSize,
isdigit = CLIB.SDL_isdigit,
log = CLIB.SDL_log,
SetWindowMaximumSize = CLIB.SDL_SetWindowMaximumSize,
GetVersion = CLIB.SDL_GetVersion,
SetWindowSize = CLIB.SDL_SetWindowSize,
GetWindowPosition = CLIB.SDL_GetWindowPosition,
JoystickGetDeviceProductVersion = CLIB.SDL_JoystickGetDeviceProductVersion,
SetWindowIcon = CLIB.SDL_SetWindowIcon,
HapticNewEffect = CLIB.SDL_HapticNewEffect,
ceilf = CLIB.SDL_ceilf,
GetRGBA = CLIB.SDL_GetRGBA,
SetWindowDisplayMode = CLIB.SDL_SetWindowDisplayMode,
GetWindowDisplayIndex = CLIB.SDL_GetWindowDisplayIndex,
GetClosestDisplayMode = CLIB.SDL_GetClosestDisplayMode,
GetDisplayMode = CLIB.SDL_GetDisplayMode,
GetNumDisplayModes = CLIB.SDL_GetNumDisplayModes,
GetDisplayUsableBounds = CLIB.SDL_GetDisplayUsableBounds,
GetDisplayDPI = CLIB.SDL_GetDisplayDPI,
GetDisplayBounds = CLIB.SDL_GetDisplayBounds,
powf = CLIB.SDL_powf,
GetDisplayName = CLIB.SDL_GetDisplayName,
GetCurrentVideoDriver = CLIB.SDL_GetCurrentVideoDriver,
ReadBE32 = CLIB.SDL_ReadBE32,
VideoInit = CLIB.SDL_VideoInit,
GetNumVideoDrivers = CLIB.SDL_GetNumVideoDrivers,
GetRendererInfo = CLIB.SDL_GetRendererInfo,
UpperBlit = CLIB.SDL_UpperBlit,
ConvertPixels = CLIB.SDL_ConvertPixels,
ConvertSurface = CLIB.SDL_ConvertSurface,
SetClipRect = CLIB.SDL_SetClipRect,
SetSurfaceAlphaMod = CLIB.SDL_SetSurfaceAlphaMod,
GetSurfaceColorMod = CLIB.SDL_GetSurfaceColorMod,
SetColorKey = CLIB.SDL_SetColorKey,
LoadBMP_RW = CLIB.SDL_LoadBMP_RW,
CreateRGBSurfaceFrom = CLIB.SDL_CreateRGBSurfaceFrom,
CreateRGBSurface = CLIB.SDL_CreateRGBSurface,
ComposeCustomBlendMode = CLIB.SDL_ComposeCustomBlendMode,
DestroyCond = CLIB.SDL_DestroyCond,
lltoa = CLIB.SDL_lltoa,
CreateCond = CLIB.SDL_CreateCond,
WriteBE64 = CLIB.SDL_WriteBE64,
WriteLE64 = CLIB.SDL_WriteLE64,
GetPixelFormatName = CLIB.SDL_GetPixelFormatName,
memcmp = CLIB.SDL_memcmp,
JoystickGetAttached = CLIB.SDL_JoystickGetAttached,
strtod = CLIB.SDL_strtod,
RenderDrawPoints = CLIB.SDL_RenderDrawPoints,
ReadU8 = CLIB.SDL_ReadU8,
HapticRumbleSupported = CLIB.SDL_HapticRumbleSupported,
snprintf = CLIB.SDL_snprintf,
JoystickGetDeviceInstanceID = CLIB.SDL_JoystickGetDeviceInstanceID,
LockAudioDevice = CLIB.SDL_LockAudioDevice,
AddEventWatch = CLIB.SDL_AddEventWatch,
wcscmp = CLIB.SDL_wcscmp,
strtol = CLIB.SDL_strtol,
OpenAudio = CLIB.SDL_OpenAudio,
GameControllerGetButtonFromString = CLIB.SDL_GameControllerGetButtonFromString,
JoystickGetGUID = CLIB.SDL_JoystickGetGUID,
CreateCursor = CLIB.SDL_CreateCursor,
strrev = CLIB.SDL_strrev,
GameControllerUpdate = CLIB.SDL_GameControllerUpdate,
SetYUVConversionMode = CLIB.SDL_SetYUVConversionMode,
SetWindowData = CLIB.SDL_SetWindowData,
atan2f = CLIB.SDL_atan2f,
GetShapedWindowMode = CLIB.SDL_GetShapedWindowMode,
UnlockAudio = CLIB.SDL_UnlockAudio,
EnclosePoints = CLIB.SDL_EnclosePoints,
memmove = CLIB.SDL_memmove,
iconv_string = CLIB.SDL_iconv_string,
strtoll = CLIB.SDL_strtoll,
CreateWindowAndRenderer = CLIB.SDL_CreateWindowAndRenderer,
fmodf = CLIB.SDL_fmodf,
HapticPause = CLIB.SDL_HapticPause,
CreateWindowFrom = CLIB.SDL_CreateWindowFrom,
strstr = CLIB.SDL_strstr,
LockMutex = CLIB.SDL_LockMutex,
JoystickGetDeviceGUID = CLIB.SDL_JoystickGetDeviceGUID,
SaveAllDollarTemplates = CLIB.SDL_SaveAllDollarTemplates,
uitoa = CLIB.SDL_uitoa,
RegisterEvents = CLIB.SDL_RegisterEvents,
GetWindowSize = CLIB.SDL_GetWindowSize,
SetPixelFormatPalette = CLIB.SDL_SetPixelFormatPalette,
GetWindowBrightness = CLIB.SDL_GetWindowBrightness,
GetClipboardText = CLIB.SDL_GetClipboardText,
OpenAudioDevice = CLIB.SDL_OpenAudioDevice,
SetClipboardText = CLIB.SDL_SetClipboardText,
GetSurfaceAlphaMod = CLIB.SDL_GetSurfaceAlphaMod,
GetNumAllocations = CLIB.SDL_GetNumAllocations,
LogResetPriorities = CLIB.SDL_LogResetPriorities,
tan = CLIB.SDL_tan,
SetSurfacePalette = CLIB.SDL_SetSurfacePalette,
DestroyTexture = CLIB.SDL_DestroyTexture,
JoystickGetDeviceType = CLIB.SDL_JoystickGetDeviceType,
RenderReadPixels = CLIB.SDL_RenderReadPixels,
FreeRW = CLIB.SDL_FreeRW,
AtomicUnlock = CLIB.SDL_AtomicUnlock,
JoystickNumBalls = CLIB.SDL_JoystickNumBalls,
GameControllerNumMappings = CLIB.SDL_GameControllerNumMappings,
SetWindowBrightness = CLIB.SDL_SetWindowBrightness,
strncasecmp = CLIB.SDL_strncasecmp,
atan2 = CLIB.SDL_atan2,
GameControllerGetJoystick = CLIB.SDL_GameControllerGetJoystick,
GetPerformanceFrequency = CLIB.SDL_GetPerformanceFrequency,
GetTextureBlendMode = CLIB.SDL_GetTextureBlendMode,
RWFromFile = CLIB.SDL_RWFromFile,
ReadBE16 = CLIB.SDL_ReadBE16,
tanf = CLIB.SDL_tanf,
acosf = CLIB.SDL_acosf,
LogInfo = CLIB.SDL_LogInfo,
floorf = CLIB.SDL_floorf,
GameControllerMappingForGUID = CLIB.SDL_GameControllerMappingForGUID,
GetNumVideoDisplays = CLIB.SDL_GetNumVideoDisplays,
LogWarn = CLIB.SDL_LogWarn,
fmod = CLIB.SDL_fmod,
AudioStreamPut = CLIB.SDL_AudioStreamPut,
HapticStopEffect = CLIB.SDL_HapticStopEffect,
SetMainReady = CLIB.SDL_SetMainReady,
FreeSurface = CLIB.SDL_FreeSurface,
HapticOpenFromJoystick = CLIB.SDL_HapticOpenFromJoystick,
MapRGBA = CLIB.SDL_MapRGBA,
free = CLIB.SDL_free,
strlcpy = CLIB.SDL_strlcpy,
strupr = CLIB.SDL_strupr,
sqrt = CLIB.SDL_sqrt,
HapticIndex = CLIB.SDL_HapticIndex,
WriteBE32 = CLIB.SDL_WriteBE32,
AllocPalette = CLIB.SDL_AllocPalette,
}
library.e = {
TEXTUREACCESS_STATIC = ffi.cast("enum SDL_TextureAccess", "SDL_TEXTUREACCESS_STATIC"),
TEXTUREACCESS_STREAMING = ffi.cast("enum SDL_TextureAccess", "SDL_TEXTUREACCESS_STREAMING"),
TEXTUREACCESS_TARGET = ffi.cast("enum SDL_TextureAccess", "SDL_TEXTUREACCESS_TARGET"),
BLENDMODE_NONE = ffi.cast("enum SDL_BlendMode", "SDL_BLENDMODE_NONE"),
BLENDMODE_BLEND = ffi.cast("enum SDL_BlendMode", "SDL_BLENDMODE_BLEND"),
BLENDMODE_ADD = ffi.cast("enum SDL_BlendMode", "SDL_BLENDMODE_ADD"),
BLENDMODE_MOD = ffi.cast("enum SDL_BlendMode", "SDL_BLENDMODE_MOD"),
BLENDMODE_INVALID = ffi.cast("enum SDL_BlendMode", "SDL_BLENDMODE_INVALID"),
WINDOWEVENT_NONE = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_NONE"),
WINDOWEVENT_SHOWN = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_SHOWN"),
WINDOWEVENT_HIDDEN = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_HIDDEN"),
WINDOWEVENT_EXPOSED = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_EXPOSED"),
WINDOWEVENT_MOVED = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_MOVED"),
WINDOWEVENT_RESIZED = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_RESIZED"),
WINDOWEVENT_SIZE_CHANGED = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_SIZE_CHANGED"),
WINDOWEVENT_MINIMIZED = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_MINIMIZED"),
WINDOWEVENT_MAXIMIZED = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_MAXIMIZED"),
WINDOWEVENT_RESTORED = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_RESTORED"),
WINDOWEVENT_ENTER = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_ENTER"),
WINDOWEVENT_LEAVE = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_LEAVE"),
WINDOWEVENT_FOCUS_GAINED = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_FOCUS_GAINED"),
WINDOWEVENT_FOCUS_LOST = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_FOCUS_LOST"),
WINDOWEVENT_CLOSE = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_CLOSE"),
WINDOWEVENT_TAKE_FOCUS = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_TAKE_FOCUS"),
WINDOWEVENT_HIT_TEST = ffi.cast("enum SDL_WindowEventID", "SDL_WINDOWEVENT_HIT_TEST"),
CONTROLLER_BINDTYPE_NONE = ffi.cast("enum SDL_GameControllerBindType", "SDL_CONTROLLER_BINDTYPE_NONE"),
CONTROLLER_BINDTYPE_BUTTON = ffi.cast("enum SDL_GameControllerBindType", "SDL_CONTROLLER_BINDTYPE_BUTTON"),
CONTROLLER_BINDTYPE_AXIS = ffi.cast("enum SDL_GameControllerBindType", "SDL_CONTROLLER_BINDTYPE_AXIS"),
CONTROLLER_BINDTYPE_HAT = ffi.cast("enum SDL_GameControllerBindType", "SDL_CONTROLLER_BINDTYPE_HAT"),
FALSE = ffi.cast("enum SDL_bool", "SDL_FALSE"),
TRUE = ffi.cast("enum SDL_bool", "SDL_TRUE"),
POWERSTATE_UNKNOWN = ffi.cast("enum SDL_PowerState", "SDL_POWERSTATE_UNKNOWN"),
POWERSTATE_ON_BATTERY = ffi.cast("enum SDL_PowerState", "SDL_POWERSTATE_ON_BATTERY"),
POWERSTATE_NO_BATTERY = ffi.cast("enum SDL_PowerState", "SDL_POWERSTATE_NO_BATTERY"),
POWERSTATE_CHARGING = ffi.cast("enum SDL_PowerState", "SDL_POWERSTATE_CHARGING"),
POWERSTATE_CHARGED = ffi.cast("enum SDL_PowerState", "SDL_POWERSTATE_CHARGED"),
SYSWM_UNKNOWN = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_UNKNOWN"),
SYSWM_WINDOWS = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_WINDOWS"),
SYSWM_X11 = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_X11"),
SYSWM_DIRECTFB = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_DIRECTFB"),
SYSWM_COCOA = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_COCOA"),
SYSWM_UIKIT = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_UIKIT"),
SYSWM_WAYLAND = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_WAYLAND"),
SYSWM_MIR = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_MIR"),
SYSWM_WINRT = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_WINRT"),
SYSWM_ANDROID = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_ANDROID"),
SYSWM_VIVANTE = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_VIVANTE"),
SYSWM_OS2 = ffi.cast("enum SDL_SYSWM_TYPE", "SDL_SYSWM_OS2"),
BLENDFACTOR_ZERO = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_ZERO"),
BLENDFACTOR_ONE = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_ONE"),
BLENDFACTOR_SRC_COLOR = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_SRC_COLOR"),
BLENDFACTOR_ONE_MINUS_SRC_COLOR = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR"),
BLENDFACTOR_SRC_ALPHA = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_SRC_ALPHA"),
BLENDFACTOR_ONE_MINUS_SRC_ALPHA = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA"),
BLENDFACTOR_DST_COLOR = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_DST_COLOR"),
BLENDFACTOR_ONE_MINUS_DST_COLOR = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR"),
BLENDFACTOR_DST_ALPHA = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_DST_ALPHA"),
BLENDFACTOR_ONE_MINUS_DST_ALPHA = ffi.cast("enum SDL_BlendFactor", "SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA"),
AUDIO_STOPPED = ffi.cast("enum SDL_AudioStatus", "SDL_AUDIO_STOPPED"),
AUDIO_PLAYING = ffi.cast("enum SDL_AudioStatus", "SDL_AUDIO_PLAYING"),
AUDIO_PAUSED = ffi.cast("enum SDL_AudioStatus", "SDL_AUDIO_PAUSED"),
CONTROLLER_AXIS_INVALID = ffi.cast("enum SDL_GameControllerAxis", "SDL_CONTROLLER_AXIS_INVALID"),
CONTROLLER_AXIS_LEFTX = ffi.cast("enum SDL_GameControllerAxis", "SDL_CONTROLLER_AXIS_LEFTX"),
CONTROLLER_AXIS_LEFTY = ffi.cast("enum SDL_GameControllerAxis", "SDL_CONTROLLER_AXIS_LEFTY"),
CONTROLLER_AXIS_RIGHTX = ffi.cast("enum SDL_GameControllerAxis", "SDL_CONTROLLER_AXIS_RIGHTX"),
CONTROLLER_AXIS_RIGHTY = ffi.cast("enum SDL_GameControllerAxis", "SDL_CONTROLLER_AXIS_RIGHTY"),
CONTROLLER_AXIS_TRIGGERLEFT = ffi.cast("enum SDL_GameControllerAxis", "SDL_CONTROLLER_AXIS_TRIGGERLEFT"),
CONTROLLER_AXIS_TRIGGERRIGHT = ffi.cast("enum SDL_GameControllerAxis", "SDL_CONTROLLER_AXIS_TRIGGERRIGHT"),
CONTROLLER_AXIS_MAX = ffi.cast("enum SDL_GameControllerAxis", "SDL_CONTROLLER_AXIS_MAX"),
LOG_PRIORITY_VERBOSE = ffi.cast("enum SDL_LogPriority", "SDL_LOG_PRIORITY_VERBOSE"),
LOG_PRIORITY_DEBUG = ffi.cast("enum SDL_LogPriority", "SDL_LOG_PRIORITY_DEBUG"),
LOG_PRIORITY_INFO = ffi.cast("enum SDL_LogPriority", "SDL_LOG_PRIORITY_INFO"),
LOG_PRIORITY_WARN = ffi.cast("enum SDL_LogPriority", "SDL_LOG_PRIORITY_WARN"),
LOG_PRIORITY_ERROR = ffi.cast("enum SDL_LogPriority", "SDL_LOG_PRIORITY_ERROR"),
LOG_PRIORITY_CRITICAL = ffi.cast("enum SDL_LogPriority", "SDL_LOG_PRIORITY_CRITICAL"),
NUM_LOG_PRIORITIES = ffi.cast("enum SDL_LogPriority", "SDL_NUM_LOG_PRIORITIES"),
MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = ffi.cast("enum SDL_MessageBoxButtonFlags", "SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT"),
MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = ffi.cast("enum SDL_MessageBoxButtonFlags", "SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT"),
MOUSEWHEEL_NORMAL = ffi.cast("enum SDL_MouseWheelDirection", "SDL_MOUSEWHEEL_NORMAL"),
MOUSEWHEEL_FLIPPED = ffi.cast("enum SDL_MouseWheelDirection", "SDL_MOUSEWHEEL_FLIPPED"),
YUV_CONVERSION_JPEG = ffi.cast("enum SDL_YUV_CONVERSION_MODE", "SDL_YUV_CONVERSION_JPEG"),
YUV_CONVERSION_BT601 = ffi.cast("enum SDL_YUV_CONVERSION_MODE", "SDL_YUV_CONVERSION_BT601"),
YUV_CONVERSION_BT709 = ffi.cast("enum SDL_YUV_CONVERSION_MODE", "SDL_YUV_CONVERSION_BT709"),
YUV_CONVERSION_AUTOMATIC = ffi.cast("enum SDL_YUV_CONVERSION_MODE", "SDL_YUV_CONVERSION_AUTOMATIC"),
FLIP_NONE = ffi.cast("enum SDL_RendererFlip", "SDL_FLIP_NONE"),
FLIP_HORIZONTAL = ffi.cast("enum SDL_RendererFlip", "SDL_FLIP_HORIZONTAL"),
FLIP_VERTICAL = ffi.cast("enum SDL_RendererFlip", "SDL_FLIP_VERTICAL"),
TEXTUREMODULATE_NONE = ffi.cast("enum SDL_TextureModulate", "SDL_TEXTUREMODULATE_NONE"),
TEXTUREMODULATE_COLOR = ffi.cast("enum SDL_TextureModulate", "SDL_TEXTUREMODULATE_COLOR"),
TEXTUREMODULATE_ALPHA = ffi.cast("enum SDL_TextureModulate", "SDL_TEXTUREMODULATE_ALPHA"),
RENDERER_SOFTWARE = ffi.cast("enum SDL_RendererFlags", "SDL_RENDERER_SOFTWARE"),
RENDERER_ACCELERATED = ffi.cast("enum SDL_RendererFlags", "SDL_RENDERER_ACCELERATED"),
RENDERER_PRESENTVSYNC = ffi.cast("enum SDL_RendererFlags", "SDL_RENDERER_PRESENTVSYNC"),
RENDERER_TARGETTEXTURE = ffi.cast("enum SDL_RendererFlags", "SDL_RENDERER_TARGETTEXTURE"),
MESSAGEBOX_COLOR_BACKGROUND = ffi.cast("enum SDL_MessageBoxColorType", "SDL_MESSAGEBOX_COLOR_BACKGROUND"),
MESSAGEBOX_COLOR_TEXT = ffi.cast("enum SDL_MessageBoxColorType", "SDL_MESSAGEBOX_COLOR_TEXT"),
MESSAGEBOX_COLOR_BUTTON_BORDER = ffi.cast("enum SDL_MessageBoxColorType", "SDL_MESSAGEBOX_COLOR_BUTTON_BORDER"),
MESSAGEBOX_COLOR_BUTTON_BACKGROUND = ffi.cast("enum SDL_MessageBoxColorType", "SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND"),
MESSAGEBOX_COLOR_BUTTON_SELECTED = ffi.cast("enum SDL_MessageBoxColorType", "SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED"),
MESSAGEBOX_COLOR_MAX = ffi.cast("enum SDL_MessageBoxColorType", "SDL_MESSAGEBOX_COLOR_MAX"),
GL_CONTEXT_PROFILE_CORE = ffi.cast("enum SDL_GLprofile", "SDL_GL_CONTEXT_PROFILE_CORE"),
GL_CONTEXT_PROFILE_COMPATIBILITY = ffi.cast("enum SDL_GLprofile", "SDL_GL_CONTEXT_PROFILE_COMPATIBILITY"),
GL_CONTEXT_PROFILE_ES = ffi.cast("enum SDL_GLprofile", "SDL_GL_CONTEXT_PROFILE_ES"),
ENOMEM = ffi.cast("enum SDL_errorcode", "SDL_ENOMEM"),
EFREAD = ffi.cast("enum SDL_errorcode", "SDL_EFREAD"),
EFWRITE = ffi.cast("enum SDL_errorcode", "SDL_EFWRITE"),
EFSEEK = ffi.cast("enum SDL_errorcode", "SDL_EFSEEK"),
UNSUPPORTED = ffi.cast("enum SDL_errorcode", "SDL_UNSUPPORTED"),
LASTERROR = ffi.cast("enum SDL_errorcode", "SDL_LASTERROR"),
GL_RED_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_RED_SIZE"),
GL_GREEN_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_GREEN_SIZE"),
GL_BLUE_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_BLUE_SIZE"),
GL_ALPHA_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_ALPHA_SIZE"),
GL_BUFFER_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_BUFFER_SIZE"),
GL_DOUBLEBUFFER = ffi.cast("enum SDL_GLattr", "SDL_GL_DOUBLEBUFFER"),
GL_DEPTH_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_DEPTH_SIZE"),
GL_STENCIL_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_STENCIL_SIZE"),
GL_ACCUM_RED_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_ACCUM_RED_SIZE"),
GL_ACCUM_GREEN_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_ACCUM_GREEN_SIZE"),
GL_ACCUM_BLUE_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_ACCUM_BLUE_SIZE"),
GL_ACCUM_ALPHA_SIZE = ffi.cast("enum SDL_GLattr", "SDL_GL_ACCUM_ALPHA_SIZE"),
GL_STEREO = ffi.cast("enum SDL_GLattr", "SDL_GL_STEREO"),
GL_MULTISAMPLEBUFFERS = ffi.cast("enum SDL_GLattr", "SDL_GL_MULTISAMPLEBUFFERS"),
GL_MULTISAMPLESAMPLES = ffi.cast("enum SDL_GLattr", "SDL_GL_MULTISAMPLESAMPLES"),
GL_ACCELERATED_VISUAL = ffi.cast("enum SDL_GLattr", "SDL_GL_ACCELERATED_VISUAL"),
GL_RETAINED_BACKING = ffi.cast("enum SDL_GLattr", "SDL_GL_RETAINED_BACKING"),
GL_CONTEXT_MAJOR_VERSION = ffi.cast("enum SDL_GLattr", "SDL_GL_CONTEXT_MAJOR_VERSION"),
GL_CONTEXT_MINOR_VERSION = ffi.cast("enum SDL_GLattr", "SDL_GL_CONTEXT_MINOR_VERSION"),
GL_CONTEXT_EGL = ffi.cast("enum SDL_GLattr", "SDL_GL_CONTEXT_EGL"),
GL_CONTEXT_FLAGS = ffi.cast("enum SDL_GLattr", "SDL_GL_CONTEXT_FLAGS"),
GL_CONTEXT_PROFILE_MASK = ffi.cast("enum SDL_GLattr", "SDL_GL_CONTEXT_PROFILE_MASK"),
GL_SHARE_WITH_CURRENT_CONTEXT = ffi.cast("enum SDL_GLattr", "SDL_GL_SHARE_WITH_CURRENT_CONTEXT"),
GL_FRAMEBUFFER_SRGB_CAPABLE = ffi.cast("enum SDL_GLattr", "SDL_GL_FRAMEBUFFER_SRGB_CAPABLE"),
GL_CONTEXT_RELEASE_BEHAVIOR = ffi.cast("enum SDL_GLattr", "SDL_GL_CONTEXT_RELEASE_BEHAVIOR"),
GL_CONTEXT_RESET_NOTIFICATION = ffi.cast("enum SDL_GLattr", "SDL_GL_CONTEXT_RESET_NOTIFICATION"),
GL_CONTEXT_NO_ERROR = ffi.cast("enum SDL_GLattr", "SDL_GL_CONTEXT_NO_ERROR"),
GL_CONTEXT_RESET_NO_NOTIFICATION = ffi.cast("enum SDL_GLContextResetNotification", "SDL_GL_CONTEXT_RESET_NO_NOTIFICATION"),
GL_CONTEXT_RESET_LOSE_CONTEXT = ffi.cast("enum SDL_GLContextResetNotification", "SDL_GL_CONTEXT_RESET_LOSE_CONTEXT"),
THREAD_PRIORITY_LOW = ffi.cast("enum SDL_ThreadPriority", "SDL_THREAD_PRIORITY_LOW"),
THREAD_PRIORITY_NORMAL = ffi.cast("enum SDL_ThreadPriority", "SDL_THREAD_PRIORITY_NORMAL"),
THREAD_PRIORITY_HIGH = ffi.cast("enum SDL_ThreadPriority", "SDL_THREAD_PRIORITY_HIGH"),
INIT_TIMER = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_TIMER"),
INIT_AUDIO = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_AUDIO"),
INIT_VIDEO = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_VIDEO"),
INIT_JOYSTICK = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_JOYSTICK"),
INIT_HAPTIC = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_HAPTIC"),
INIT_GAMECONTROLLER = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_GAMECONTROLLER"),
INIT_EVENTS = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_EVENTS"),
INIT_NOPARACHUTE = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_NOPARACHUTE"),
INIT_EVERYTHING = ffi.cast("enum SDL_grrrrrr", "SDL_INIT_EVERYTHING"),
WINDOWPOS_UNDEFINED_MASK = ffi.cast("enum SDL_grrrrrr", "SDL_WINDOWPOS_UNDEFINED_MASK"),
WINDOWPOS_UNDEFINED_DISPLAY = ffi.cast("enum SDL_grrrrrr", "SDL_WINDOWPOS_UNDEFINED_DISPLAY"),
WINDOWPOS_UNDEFINED = ffi.cast("enum SDL_grrrrrr", "SDL_WINDOWPOS_UNDEFINED"),
WINDOWPOS_CENTERED_MASK = ffi.cast("enum SDL_grrrrrr", "SDL_WINDOWPOS_CENTERED_MASK"),
WINDOWPOS_CENTERED = ffi.cast("enum SDL_grrrrrr", "SDL_WINDOWPOS_CENTERED"),
HINT_DEFAULT = ffi.cast("enum SDL_HintPriority", "SDL_HINT_DEFAULT"),
HINT_NORMAL = ffi.cast("enum SDL_HintPriority", "SDL_HINT_NORMAL"),
HINT_OVERRIDE = ffi.cast("enum SDL_HintPriority", "SDL_HINT_OVERRIDE"),
MESSAGEBOX_ERROR = ffi.cast("enum SDL_MessageBoxFlags", "SDL_MESSAGEBOX_ERROR"),
MESSAGEBOX_WARNING = ffi.cast("enum SDL_MessageBoxFlags", "SDL_MESSAGEBOX_WARNING"),
MESSAGEBOX_INFORMATION = ffi.cast("enum SDL_MessageBoxFlags", "SDL_MESSAGEBOX_INFORMATION"),
ADDEVENT = ffi.cast("enum SDL_eventaction", "SDL_ADDEVENT"),
PEEKEVENT = ffi.cast("enum SDL_eventaction", "SDL_PEEKEVENT"),
GETEVENT = ffi.cast("enum SDL_eventaction", "SDL_GETEVENT"),
CONTROLLER_BUTTON_INVALID = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_INVALID"),
CONTROLLER_BUTTON_A = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_A"),
CONTROLLER_BUTTON_B = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_B"),
CONTROLLER_BUTTON_X = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_X"),
CONTROLLER_BUTTON_Y = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_Y"),
CONTROLLER_BUTTON_BACK = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_BACK"),
CONTROLLER_BUTTON_GUIDE = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_GUIDE"),
CONTROLLER_BUTTON_START = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_START"),
CONTROLLER_BUTTON_LEFTSTICK = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_LEFTSTICK"),
CONTROLLER_BUTTON_RIGHTSTICK = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_RIGHTSTICK"),
CONTROLLER_BUTTON_LEFTSHOULDER = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_LEFTSHOULDER"),
CONTROLLER_BUTTON_RIGHTSHOULDER = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_RIGHTSHOULDER"),
CONTROLLER_BUTTON_DPAD_UP = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_DPAD_UP"),
CONTROLLER_BUTTON_DPAD_DOWN = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_DPAD_DOWN"),
CONTROLLER_BUTTON_DPAD_LEFT = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_DPAD_LEFT"),
CONTROLLER_BUTTON_DPAD_RIGHT = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_DPAD_RIGHT"),
CONTROLLER_BUTTON_MAX = ffi.cast("enum SDL_GameControllerButton", "SDL_CONTROLLER_BUTTON_MAX"),
FIRSTEVENT = ffi.cast("enum SDL_EventType", "SDL_FIRSTEVENT"),
QUIT = ffi.cast("enum SDL_EventType", "SDL_QUIT"),
APP_TERMINATING = ffi.cast("enum SDL_EventType", "SDL_APP_TERMINATING"),
APP_LOWMEMORY = ffi.cast("enum SDL_EventType", "SDL_APP_LOWMEMORY"),
APP_WILLENTERBACKGROUND = ffi.cast("enum SDL_EventType", "SDL_APP_WILLENTERBACKGROUND"),
APP_DIDENTERBACKGROUND = ffi.cast("enum SDL_EventType", "SDL_APP_DIDENTERBACKGROUND"),
APP_WILLENTERFOREGROUND = ffi.cast("enum SDL_EventType", "SDL_APP_WILLENTERFOREGROUND"),
APP_DIDENTERFOREGROUND = ffi.cast("enum SDL_EventType", "SDL_APP_DIDENTERFOREGROUND"),
WINDOWEVENT = ffi.cast("enum SDL_EventType", "SDL_WINDOWEVENT"),
SYSWMEVENT = ffi.cast("enum SDL_EventType", "SDL_SYSWMEVENT"),
KEYDOWN = ffi.cast("enum SDL_EventType", "SDL_KEYDOWN"),
KEYUP = ffi.cast("enum SDL_EventType", "SDL_KEYUP"),
TEXTEDITING = ffi.cast("enum SDL_EventType", "SDL_TEXTEDITING"),
TEXTINPUT = ffi.cast("enum SDL_EventType", "SDL_TEXTINPUT"),
KEYMAPCHANGED = ffi.cast("enum SDL_EventType", "SDL_KEYMAPCHANGED"),
MOUSEMOTION = ffi.cast("enum SDL_EventType", "SDL_MOUSEMOTION"),
MOUSEBUTTONDOWN = ffi.cast("enum SDL_EventType", "SDL_MOUSEBUTTONDOWN"),
MOUSEBUTTONUP = ffi.cast("enum SDL_EventType", "SDL_MOUSEBUTTONUP"),
MOUSEWHEEL = ffi.cast("enum SDL_EventType", "SDL_MOUSEWHEEL"),
JOYAXISMOTION = ffi.cast("enum SDL_EventType", "SDL_JOYAXISMOTION"),
JOYBALLMOTION = ffi.cast("enum SDL_EventType", "SDL_JOYBALLMOTION"),
JOYHATMOTION = ffi.cast("enum SDL_EventType", "SDL_JOYHATMOTION"),
JOYBUTTONDOWN = ffi.cast("enum SDL_EventType", "SDL_JOYBUTTONDOWN"),
JOYBUTTONUP = ffi.cast("enum SDL_EventType", "SDL_JOYBUTTONUP"),
JOYDEVICEADDED = ffi.cast("enum SDL_EventType", "SDL_JOYDEVICEADDED"),
JOYDEVICEREMOVED = ffi.cast("enum SDL_EventType", "SDL_JOYDEVICEREMOVED"),
CONTROLLERAXISMOTION = ffi.cast("enum SDL_EventType", "SDL_CONTROLLERAXISMOTION"),
CONTROLLERBUTTONDOWN = ffi.cast("enum SDL_EventType", "SDL_CONTROLLERBUTTONDOWN"),
CONTROLLERBUTTONUP = ffi.cast("enum SDL_EventType", "SDL_CONTROLLERBUTTONUP"),
CONTROLLERDEVICEADDED = ffi.cast("enum SDL_EventType", "SDL_CONTROLLERDEVICEADDED"),
CONTROLLERDEVICEREMOVED = ffi.cast("enum SDL_EventType", "SDL_CONTROLLERDEVICEREMOVED"),
CONTROLLERDEVICEREMAPPED = ffi.cast("enum SDL_EventType", "SDL_CONTROLLERDEVICEREMAPPED"),
FINGERDOWN = ffi.cast("enum SDL_EventType", "SDL_FINGERDOWN"),
FINGERUP = ffi.cast("enum SDL_EventType", "SDL_FINGERUP"),
FINGERMOTION = ffi.cast("enum SDL_EventType", "SDL_FINGERMOTION"),
DOLLARGESTURE = ffi.cast("enum SDL_EventType", "SDL_DOLLARGESTURE"),
DOLLARRECORD = ffi.cast("enum SDL_EventType", "SDL_DOLLARRECORD"),
MULTIGESTURE = ffi.cast("enum SDL_EventType", "SDL_MULTIGESTURE"),
CLIPBOARDUPDATE = ffi.cast("enum SDL_EventType", "SDL_CLIPBOARDUPDATE"),
DROPFILE = ffi.cast("enum SDL_EventType", "SDL_DROPFILE"),
DROPTEXT = ffi.cast("enum SDL_EventType", "SDL_DROPTEXT"),
DROPBEGIN = ffi.cast("enum SDL_EventType", "SDL_DROPBEGIN"),
DROPCOMPLETE = ffi.cast("enum SDL_EventType", "SDL_DROPCOMPLETE"),
AUDIODEVICEADDED = ffi.cast("enum SDL_EventType", "SDL_AUDIODEVICEADDED"),
AUDIODEVICEREMOVED = ffi.cast("enum SDL_EventType", "SDL_AUDIODEVICEREMOVED"),
RENDER_TARGETS_RESET = ffi.cast("enum SDL_EventType", "SDL_RENDER_TARGETS_RESET"),
RENDER_DEVICE_RESET = ffi.cast("enum SDL_EventType", "SDL_RENDER_DEVICE_RESET"),
USEREVENT = ffi.cast("enum SDL_EventType", "SDL_USEREVENT"),
LASTEVENT = ffi.cast("enum SDL_EventType", "SDL_LASTEVENT"),
ASSERTION_RETRY = ffi.cast("enum SDL_AssertState", "SDL_ASSERTION_RETRY"),
ASSERTION_BREAK = ffi.cast("enum SDL_AssertState", "SDL_ASSERTION_BREAK"),
ASSERTION_ABORT = ffi.cast("enum SDL_AssertState", "SDL_ASSERTION_ABORT"),
ASSERTION_IGNORE = ffi.cast("enum SDL_AssertState", "SDL_ASSERTION_IGNORE"),
ASSERTION_ALWAYS_IGNORE = ffi.cast("enum SDL_AssertState", "SDL_ASSERTION_ALWAYS_IGNORE"),
GL_CONTEXT_DEBUG_FLAG = ffi.cast("enum SDL_GLcontextFlag", "SDL_GL_CONTEXT_DEBUG_FLAG"),
GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = ffi.cast("enum SDL_GLcontextFlag", "SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG"),
GL_CONTEXT_ROBUST_ACCESS_FLAG = ffi.cast("enum SDL_GLcontextFlag", "SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG"),
GL_CONTEXT_RESET_ISOLATION_FLAG = ffi.cast("enum SDL_GLcontextFlag", "SDL_GL_CONTEXT_RESET_ISOLATION_FLAG"),
GL_CONTEXT_RELEASE_BEHAVIOR_NONE = ffi.cast("enum SDL_GLcontextReleaseFlag", "SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE"),
GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = ffi.cast("enum SDL_GLcontextReleaseFlag", "SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH"),
SYSTEM_CURSOR_ARROW = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_ARROW"),
SYSTEM_CURSOR_IBEAM = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_IBEAM"),
SYSTEM_CURSOR_WAIT = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_WAIT"),
SYSTEM_CURSOR_CROSSHAIR = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_CROSSHAIR"),
SYSTEM_CURSOR_WAITARROW = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_WAITARROW"),
SYSTEM_CURSOR_SIZENWSE = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_SIZENWSE"),
SYSTEM_CURSOR_SIZENESW = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_SIZENESW"),
SYSTEM_CURSOR_SIZEWE = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_SIZEWE"),
SYSTEM_CURSOR_SIZENS = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_SIZENS"),
SYSTEM_CURSOR_SIZEALL = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_SIZEALL"),
SYSTEM_CURSOR_NO = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_NO"),
SYSTEM_CURSOR_HAND = ffi.cast("enum SDL_SystemCursor", "SDL_SYSTEM_CURSOR_HAND"),
NUM_SYSTEM_CURSORS = ffi.cast("enum SDL_SystemCursor", "SDL_NUM_SYSTEM_CURSORS"),
WINDOW_FULLSCREEN = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_FULLSCREEN"),
WINDOW_OPENGL = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_OPENGL"),
WINDOW_SHOWN = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_SHOWN"),
WINDOW_HIDDEN = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_HIDDEN"),
WINDOW_BORDERLESS = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_BORDERLESS"),
WINDOW_RESIZABLE = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_RESIZABLE"),
WINDOW_MINIMIZED = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_MINIMIZED"),
WINDOW_MAXIMIZED = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_MAXIMIZED"),
WINDOW_INPUT_GRABBED = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_INPUT_GRABBED"),
WINDOW_INPUT_FOCUS = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_INPUT_FOCUS"),
WINDOW_MOUSE_FOCUS = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_MOUSE_FOCUS"),
WINDOW_FULLSCREEN_DESKTOP = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_FULLSCREEN_DESKTOP"),
WINDOW_FOREIGN = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_FOREIGN"),
WINDOW_ALLOW_HIGHDPI = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_ALLOW_HIGHDPI"),
WINDOW_MOUSE_CAPTURE = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_MOUSE_CAPTURE"),
WINDOW_ALWAYS_ON_TOP = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_ALWAYS_ON_TOP"),
WINDOW_SKIP_TASKBAR = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_SKIP_TASKBAR"),
WINDOW_UTILITY = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_UTILITY"),
WINDOW_TOOLTIP = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_TOOLTIP"),
WINDOW_POPUP_MENU = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_POPUP_MENU"),
WINDOW_VULKAN = ffi.cast("enum SDL_WindowFlags", "SDL_WINDOW_VULKAN"),
JOYSTICK_POWER_UNKNOWN = ffi.cast("enum SDL_JoystickPowerLevel", "SDL_JOYSTICK_POWER_UNKNOWN"),
JOYSTICK_POWER_EMPTY = ffi.cast("enum SDL_JoystickPowerLevel", "SDL_JOYSTICK_POWER_EMPTY"),
JOYSTICK_POWER_LOW = ffi.cast("enum SDL_JoystickPowerLevel", "SDL_JOYSTICK_POWER_LOW"),
JOYSTICK_POWER_MEDIUM = ffi.cast("enum SDL_JoystickPowerLevel", "SDL_JOYSTICK_POWER_MEDIUM"),
JOYSTICK_POWER_FULL = ffi.cast("enum SDL_JoystickPowerLevel", "SDL_JOYSTICK_POWER_FULL"),
JOYSTICK_POWER_WIRED = ffi.cast("enum SDL_JoystickPowerLevel", "SDL_JOYSTICK_POWER_WIRED"),
JOYSTICK_POWER_MAX = ffi.cast("enum SDL_JoystickPowerLevel", "SDL_JOYSTICK_POWER_MAX"),
HITTEST_NORMAL = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_NORMAL"),
HITTEST_DRAGGABLE = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_DRAGGABLE"),
HITTEST_RESIZE_TOPLEFT = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_RESIZE_TOPLEFT"),
HITTEST_RESIZE_TOP = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_RESIZE_TOP"),
HITTEST_RESIZE_TOPRIGHT = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_RESIZE_TOPRIGHT"),
HITTEST_RESIZE_RIGHT = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_RESIZE_RIGHT"),
HITTEST_RESIZE_BOTTOMRIGHT = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_RESIZE_BOTTOMRIGHT"),
HITTEST_RESIZE_BOTTOM = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_RESIZE_BOTTOM"),
HITTEST_RESIZE_BOTTOMLEFT = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_RESIZE_BOTTOMLEFT"),
HITTEST_RESIZE_LEFT = ffi.cast("enum SDL_HitTestResult", "SDL_HITTEST_RESIZE_LEFT"),
SCANCODE_UNKNOWN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_UNKNOWN"),
SCANCODE_A = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_A"),
SCANCODE_B = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_B"),
SCANCODE_C = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_C"),
SCANCODE_D = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_D"),
SCANCODE_E = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_E"),
SCANCODE_F = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F"),
SCANCODE_G = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_G"),
SCANCODE_H = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_H"),
SCANCODE_I = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_I"),
SCANCODE_J = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_J"),
SCANCODE_K = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_K"),
SCANCODE_L = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_L"),
SCANCODE_M = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_M"),
SCANCODE_N = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_N"),
SCANCODE_O = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_O"),
SCANCODE_P = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_P"),
SCANCODE_Q = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_Q"),
SCANCODE_R = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_R"),
SCANCODE_S = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_S"),
SCANCODE_T = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_T"),
SCANCODE_U = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_U"),
SCANCODE_V = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_V"),
SCANCODE_W = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_W"),
SCANCODE_X = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_X"),
SCANCODE_Y = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_Y"),
SCANCODE_Z = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_Z"),
SCANCODE_1 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_1"),
SCANCODE_2 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_2"),
SCANCODE_3 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_3"),
SCANCODE_4 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_4"),
SCANCODE_5 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_5"),
SCANCODE_6 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_6"),
SCANCODE_7 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_7"),
SCANCODE_8 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_8"),
SCANCODE_9 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_9"),
SCANCODE_0 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_0"),
SCANCODE_RETURN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_RETURN"),
SCANCODE_ESCAPE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_ESCAPE"),
SCANCODE_BACKSPACE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_BACKSPACE"),
SCANCODE_TAB = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_TAB"),
SCANCODE_SPACE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_SPACE"),
SCANCODE_MINUS = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_MINUS"),
SCANCODE_EQUALS = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_EQUALS"),
SCANCODE_LEFTBRACKET = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LEFTBRACKET"),
SCANCODE_RIGHTBRACKET = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_RIGHTBRACKET"),
SCANCODE_BACKSLASH = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_BACKSLASH"),
SCANCODE_NONUSHASH = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_NONUSHASH"),
SCANCODE_SEMICOLON = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_SEMICOLON"),
SCANCODE_APOSTROPHE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_APOSTROPHE"),
SCANCODE_GRAVE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_GRAVE"),
SCANCODE_COMMA = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_COMMA"),
SCANCODE_PERIOD = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_PERIOD"),
SCANCODE_SLASH = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_SLASH"),
SCANCODE_CAPSLOCK = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CAPSLOCK"),
SCANCODE_F1 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F1"),
SCANCODE_F2 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F2"),
SCANCODE_F3 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F3"),
SCANCODE_F4 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F4"),
SCANCODE_F5 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F5"),
SCANCODE_F6 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F6"),
SCANCODE_F7 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F7"),
SCANCODE_F8 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F8"),
SCANCODE_F9 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F9"),
SCANCODE_F10 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F10"),
SCANCODE_F11 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F11"),
SCANCODE_F12 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F12"),
SCANCODE_PRINTSCREEN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_PRINTSCREEN"),
SCANCODE_SCROLLLOCK = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_SCROLLLOCK"),
SCANCODE_PAUSE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_PAUSE"),
SCANCODE_INSERT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INSERT"),
SCANCODE_HOME = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_HOME"),
SCANCODE_PAGEUP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_PAGEUP"),
SCANCODE_DELETE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_DELETE"),
SCANCODE_END = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_END"),
SCANCODE_PAGEDOWN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_PAGEDOWN"),
SCANCODE_RIGHT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_RIGHT"),
SCANCODE_LEFT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LEFT"),
SCANCODE_DOWN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_DOWN"),
SCANCODE_UP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_UP"),
SCANCODE_NUMLOCKCLEAR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_NUMLOCKCLEAR"),
SCANCODE_KP_DIVIDE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_DIVIDE"),
SCANCODE_KP_MULTIPLY = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MULTIPLY"),
SCANCODE_KP_MINUS = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MINUS"),
SCANCODE_KP_PLUS = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_PLUS"),
SCANCODE_KP_ENTER = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_ENTER"),
SCANCODE_KP_1 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_1"),
SCANCODE_KP_2 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_2"),
SCANCODE_KP_3 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_3"),
SCANCODE_KP_4 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_4"),
SCANCODE_KP_5 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_5"),
SCANCODE_KP_6 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_6"),
SCANCODE_KP_7 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_7"),
SCANCODE_KP_8 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_8"),
SCANCODE_KP_9 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_9"),
SCANCODE_KP_0 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_0"),
SCANCODE_KP_PERIOD = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_PERIOD"),
SCANCODE_NONUSBACKSLASH = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_NONUSBACKSLASH"),
SCANCODE_APPLICATION = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_APPLICATION"),
SCANCODE_POWER = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_POWER"),
SCANCODE_KP_EQUALS = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_EQUALS"),
SCANCODE_F13 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F13"),
SCANCODE_F14 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F14"),
SCANCODE_F15 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F15"),
SCANCODE_F16 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F16"),
SCANCODE_F17 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F17"),
SCANCODE_F18 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F18"),
SCANCODE_F19 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F19"),
SCANCODE_F20 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F20"),
SCANCODE_F21 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F21"),
SCANCODE_F22 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F22"),
SCANCODE_F23 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F23"),
SCANCODE_F24 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_F24"),
SCANCODE_EXECUTE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_EXECUTE"),
SCANCODE_HELP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_HELP"),
SCANCODE_MENU = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_MENU"),
SCANCODE_SELECT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_SELECT"),
SCANCODE_STOP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_STOP"),
SCANCODE_AGAIN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AGAIN"),
SCANCODE_UNDO = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_UNDO"),
SCANCODE_CUT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CUT"),
SCANCODE_COPY = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_COPY"),
SCANCODE_PASTE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_PASTE"),
SCANCODE_FIND = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_FIND"),
SCANCODE_MUTE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_MUTE"),
SCANCODE_VOLUMEUP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_VOLUMEUP"),
SCANCODE_VOLUMEDOWN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_VOLUMEDOWN"),
SCANCODE_KP_COMMA = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_COMMA"),
SCANCODE_KP_EQUALSAS400 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_EQUALSAS400"),
SCANCODE_INTERNATIONAL1 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL1"),
SCANCODE_INTERNATIONAL2 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL2"),
SCANCODE_INTERNATIONAL3 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL3"),
SCANCODE_INTERNATIONAL4 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL4"),
SCANCODE_INTERNATIONAL5 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL5"),
SCANCODE_INTERNATIONAL6 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL6"),
SCANCODE_INTERNATIONAL7 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL7"),
SCANCODE_INTERNATIONAL8 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL8"),
SCANCODE_INTERNATIONAL9 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_INTERNATIONAL9"),
SCANCODE_LANG1 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG1"),
SCANCODE_LANG2 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG2"),
SCANCODE_LANG3 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG3"),
SCANCODE_LANG4 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG4"),
SCANCODE_LANG5 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG5"),
SCANCODE_LANG6 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG6"),
SCANCODE_LANG7 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG7"),
SCANCODE_LANG8 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG8"),
SCANCODE_LANG9 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LANG9"),
SCANCODE_ALTERASE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_ALTERASE"),
SCANCODE_SYSREQ = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_SYSREQ"),
SCANCODE_CANCEL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CANCEL"),
SCANCODE_CLEAR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CLEAR"),
SCANCODE_PRIOR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_PRIOR"),
SCANCODE_RETURN2 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_RETURN2"),
SCANCODE_SEPARATOR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_SEPARATOR"),
SCANCODE_OUT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_OUT"),
SCANCODE_OPER = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_OPER"),
SCANCODE_CLEARAGAIN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CLEARAGAIN"),
SCANCODE_CRSEL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CRSEL"),
SCANCODE_EXSEL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_EXSEL"),
SCANCODE_KP_00 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_00"),
SCANCODE_KP_000 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_000"),
SCANCODE_THOUSANDSSEPARATOR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_THOUSANDSSEPARATOR"),
SCANCODE_DECIMALSEPARATOR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_DECIMALSEPARATOR"),
SCANCODE_CURRENCYUNIT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CURRENCYUNIT"),
SCANCODE_CURRENCYSUBUNIT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CURRENCYSUBUNIT"),
SCANCODE_KP_LEFTPAREN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_LEFTPAREN"),
SCANCODE_KP_RIGHTPAREN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_RIGHTPAREN"),
SCANCODE_KP_LEFTBRACE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_LEFTBRACE"),
SCANCODE_KP_RIGHTBRACE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_RIGHTBRACE"),
SCANCODE_KP_TAB = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_TAB"),
SCANCODE_KP_BACKSPACE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_BACKSPACE"),
SCANCODE_KP_A = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_A"),
SCANCODE_KP_B = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_B"),
SCANCODE_KP_C = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_C"),
SCANCODE_KP_D = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_D"),
SCANCODE_KP_E = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_E"),
SCANCODE_KP_F = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_F"),
SCANCODE_KP_XOR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_XOR"),
SCANCODE_KP_POWER = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_POWER"),
SCANCODE_KP_PERCENT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_PERCENT"),
SCANCODE_KP_LESS = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_LESS"),
SCANCODE_KP_GREATER = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_GREATER"),
SCANCODE_KP_AMPERSAND = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_AMPERSAND"),
SCANCODE_KP_DBLAMPERSAND = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_DBLAMPERSAND"),
SCANCODE_KP_VERTICALBAR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_VERTICALBAR"),
SCANCODE_KP_DBLVERTICALBAR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_DBLVERTICALBAR"),
SCANCODE_KP_COLON = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_COLON"),
SCANCODE_KP_HASH = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_HASH"),
SCANCODE_KP_SPACE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_SPACE"),
SCANCODE_KP_AT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_AT"),
SCANCODE_KP_EXCLAM = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_EXCLAM"),
SCANCODE_KP_MEMSTORE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MEMSTORE"),
SCANCODE_KP_MEMRECALL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MEMRECALL"),
SCANCODE_KP_MEMCLEAR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MEMCLEAR"),
SCANCODE_KP_MEMADD = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MEMADD"),
SCANCODE_KP_MEMSUBTRACT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MEMSUBTRACT"),
SCANCODE_KP_MEMMULTIPLY = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MEMMULTIPLY"),
SCANCODE_KP_MEMDIVIDE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_MEMDIVIDE"),
SCANCODE_KP_PLUSMINUS = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_PLUSMINUS"),
SCANCODE_KP_CLEAR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_CLEAR"),
SCANCODE_KP_CLEARENTRY = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_CLEARENTRY"),
SCANCODE_KP_BINARY = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_BINARY"),
SCANCODE_KP_OCTAL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_OCTAL"),
SCANCODE_KP_DECIMAL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_DECIMAL"),
SCANCODE_KP_HEXADECIMAL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KP_HEXADECIMAL"),
SCANCODE_LCTRL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LCTRL"),
SCANCODE_LSHIFT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LSHIFT"),
SCANCODE_LALT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LALT"),
SCANCODE_LGUI = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_LGUI"),
SCANCODE_RCTRL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_RCTRL"),
SCANCODE_RSHIFT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_RSHIFT"),
SCANCODE_RALT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_RALT"),
SCANCODE_RGUI = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_RGUI"),
SCANCODE_MODE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_MODE"),
SCANCODE_AUDIONEXT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AUDIONEXT"),
SCANCODE_AUDIOPREV = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AUDIOPREV"),
SCANCODE_AUDIOSTOP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AUDIOSTOP"),
SCANCODE_AUDIOPLAY = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AUDIOPLAY"),
SCANCODE_AUDIOMUTE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AUDIOMUTE"),
SCANCODE_MEDIASELECT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_MEDIASELECT"),
SCANCODE_WWW = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_WWW"),
SCANCODE_MAIL = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_MAIL"),
SCANCODE_CALCULATOR = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_CALCULATOR"),
SCANCODE_COMPUTER = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_COMPUTER"),
SCANCODE_AC_SEARCH = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AC_SEARCH"),
SCANCODE_AC_HOME = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AC_HOME"),
SCANCODE_AC_BACK = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AC_BACK"),
SCANCODE_AC_FORWARD = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AC_FORWARD"),
SCANCODE_AC_STOP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AC_STOP"),
SCANCODE_AC_REFRESH = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AC_REFRESH"),
SCANCODE_AC_BOOKMARKS = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AC_BOOKMARKS"),
SCANCODE_BRIGHTNESSDOWN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_BRIGHTNESSDOWN"),
SCANCODE_BRIGHTNESSUP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_BRIGHTNESSUP"),
SCANCODE_DISPLAYSWITCH = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_DISPLAYSWITCH"),
SCANCODE_KBDILLUMTOGGLE = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KBDILLUMTOGGLE"),
SCANCODE_KBDILLUMDOWN = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KBDILLUMDOWN"),
SCANCODE_KBDILLUMUP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_KBDILLUMUP"),
SCANCODE_EJECT = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_EJECT"),
SCANCODE_SLEEP = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_SLEEP"),
SCANCODE_APP1 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_APP1"),
SCANCODE_APP2 = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_APP2"),
SCANCODE_AUDIOREWIND = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AUDIOREWIND"),
SCANCODE_AUDIOFASTFORWARD = ffi.cast("enum SDL_Scancode", "SDL_SCANCODE_AUDIOFASTFORWARD"),
NUM_SCANCODES = ffi.cast("enum SDL_Scancode", "SDL_NUM_SCANCODES"),
BLENDOPERATION_ADD = ffi.cast("enum SDL_BlendOperation", "SDL_BLENDOPERATION_ADD"),
BLENDOPERATION_SUBTRACT = ffi.cast("enum SDL_BlendOperation", "SDL_BLENDOPERATION_SUBTRACT"),
BLENDOPERATION_REV_SUBTRACT = ffi.cast("enum SDL_BlendOperation", "SDL_BLENDOPERATION_REV_SUBTRACT"),
BLENDOPERATION_MINIMUM = ffi.cast("enum SDL_BlendOperation", "SDL_BLENDOPERATION_MINIMUM"),
BLENDOPERATION_MAXIMUM = ffi.cast("enum SDL_BlendOperation", "SDL_BLENDOPERATION_MAXIMUM"),
JOYSTICK_TYPE_UNKNOWN = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_UNKNOWN"),
JOYSTICK_TYPE_GAMECONTROLLER = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_GAMECONTROLLER"),
JOYSTICK_TYPE_WHEEL = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_WHEEL"),
JOYSTICK_TYPE_ARCADE_STICK = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_ARCADE_STICK"),
JOYSTICK_TYPE_FLIGHT_STICK = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_FLIGHT_STICK"),
JOYSTICK_TYPE_DANCE_PAD = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_DANCE_PAD"),
JOYSTICK_TYPE_GUITAR = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_GUITAR"),
JOYSTICK_TYPE_DRUM_KIT = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_DRUM_KIT"),
JOYSTICK_TYPE_ARCADE_PAD = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_ARCADE_PAD"),
JOYSTICK_TYPE_THROTTLE = ffi.cast("enum SDL_JoystickType", "SDL_JOYSTICK_TYPE_THROTTLE"),
PIXELTYPE_UNKNOWN = 0,
PIXELTYPE_INDEX1 = 1,
PIXELTYPE_INDEX4 = 2,
PIXELTYPE_INDEX8 = 3,
PIXELTYPE_PACKED8 = 4,
PIXELTYPE_PACKED16 = 5,
PIXELTYPE_PACKED32 = 6,
PIXELTYPE_ARRAYU8 = 7,
PIXELTYPE_ARRAYU16 = 8,
PIXELTYPE_ARRAYU32 = 9,
PIXELTYPE_ARRAYF16 = 10,
PIXELTYPE_ARRAYF32 = 11,
BITMAPORDER_NONE = 0,
BITMAPORDER_4321 = 1,
BITMAPORDER_1234 = 2,
PACKEDORDER_NONE = 0,
PACKEDORDER_XRGB = 1,
PACKEDORDER_RGBX = 2,
PACKEDORDER_ARGB = 3,
PACKEDORDER_RGBA = 4,
PACKEDORDER_XBGR = 5,
PACKEDORDER_BGRX = 6,
PACKEDORDER_ABGR = 7,
PACKEDORDER_BGRA = 8,
ARRAYORDER_NONE = 0,
ARRAYORDER_RGB = 1,
ARRAYORDER_RGBA = 2,
ARRAYORDER_ARGB = 3,
ARRAYORDER_BGR = 4,
ARRAYORDER_BGRA = 5,
ARRAYORDER_ABGR = 6,
PACKEDLAYOUT_NONE = 0,
PACKEDLAYOUT_332 = 1,
PACKEDLAYOUT_4444 = 2,
PACKEDLAYOUT_1555 = 3,
PACKEDLAYOUT_5551 = 4,
PACKEDLAYOUT_565 = 5,
PACKEDLAYOUT_8888 = 6,
PACKEDLAYOUT_2101010 = 7,
PACKEDLAYOUT_1010102 = 8,
PIXELFORMAT_UNKNOWN = 0,
PIXELFORMAT_INDEX1LSB = 286261504,
PIXELFORMAT_INDEX1MSB = 287310080,
PIXELFORMAT_INDEX4LSB = 303039488,
PIXELFORMAT_INDEX4MSB = 304088064,
PIXELFORMAT_INDEX8 = 318769153,
PIXELFORMAT_RGB332 = 336660481,
PIXELFORMAT_RGB444 = 353504258,
PIXELFORMAT_RGB555 = 353570562,
PIXELFORMAT_BGR555 = 357764866,
PIXELFORMAT_ARGB4444 = 355602434,
PIXELFORMAT_RGBA4444 = 356651010,
PIXELFORMAT_ABGR4444 = 359796738,
PIXELFORMAT_BGRA4444 = 360845314,
PIXELFORMAT_ARGB1555 = 355667970,
PIXELFORMAT_RGBA5551 = 356782082,
PIXELFORMAT_ABGR1555 = 359862274,
PIXELFORMAT_BGRA5551 = 360976386,
PIXELFORMAT_RGB565 = 353701890,
PIXELFORMAT_BGR565 = 357896194,
PIXELFORMAT_RGB24 = 386930691,
PIXELFORMAT_BGR24 = 390076419,
PIXELFORMAT_RGB888 = 370546692,
PIXELFORMAT_RGBX8888 = 371595268,
PIXELFORMAT_BGR888 = 374740996,
PIXELFORMAT_BGRX8888 = 375789572,
PIXELFORMAT_ARGB8888 = 372645892,
PIXELFORMAT_RGBA8888 = 373694468,
PIXELFORMAT_ABGR8888 = 376840196,
PIXELFORMAT_BGRA8888 = 377888772,
PIXELFORMAT_ARGB2101010 = 372711428,
PIXELFORMAT_RGBA32 = 376840196,
PIXELFORMAT_ARGB32 = 377888772,
PIXELFORMAT_BGRA32 = 372645892,
PIXELFORMAT_ABGR32 = 373694468,
PIXELFORMAT_YV12 = 842094169,
PIXELFORMAT_IYUV = 1448433993,
PIXELFORMAT_YUY2 = 844715353,
PIXELFORMAT_UYVY = 1498831189,
PIXELFORMAT_YVYU = 1431918169,
PIXELFORMAT_NV12 = 842094158,
PIXELFORMAT_NV21 = 825382478,
PIXELFORMAT_EXTERNAL_OES = 542328143,
LOG_CATEGORY_APPLICATION = 0,
LOG_CATEGORY_ERROR = 1,
LOG_CATEGORY_ASSERT = 2,
LOG_CATEGORY_SYSTEM = 3,
LOG_CATEGORY_AUDIO = 4,
LOG_CATEGORY_VIDEO = 5,
LOG_CATEGORY_RENDER = 6,
LOG_CATEGORY_INPUT = 7,
LOG_CATEGORY_TEST = 8,
LOG_CATEGORY_RESERVED1 = 9,
LOG_CATEGORY_RESERVED2 = 10,
LOG_CATEGORY_RESERVED3 = 11,
LOG_CATEGORY_RESERVED4 = 12,
LOG_CATEGORY_RESERVED5 = 13,
LOG_CATEGORY_RESERVED6 = 14,
LOG_CATEGORY_RESERVED7 = 15,
LOG_CATEGORY_RESERVED8 = 16,
LOG_CATEGORY_RESERVED9 = 17,
LOG_CATEGORY_RESERVED10 = 18,
LOG_CATEGORY_CUSTOM = 19,
hints_h_ = 1,
HINT_FRAMEBUFFER_ACCELERATION = "SDL_FRAMEBUFFER_ACCELERATION",
HINT_RENDER_DRIVER = "SDL_RENDER_DRIVER",
HINT_RENDER_OPENGL_SHADERS = "SDL_RENDER_OPENGL_SHADERS",
HINT_RENDER_DIRECT3D_THREADSAFE = "SDL_RENDER_DIRECT3D_THREADSAFE",
HINT_RENDER_DIRECT3D11_DEBUG = "SDL_RENDER_DIRECT3D11_DEBUG",
HINT_RENDER_LOGICAL_SIZE_MODE = "SDL_RENDER_LOGICAL_SIZE_MODE",
HINT_RENDER_SCALE_QUALITY = "SDL_RENDER_SCALE_QUALITY",
HINT_RENDER_VSYNC = "SDL_RENDER_VSYNC",
HINT_VIDEO_ALLOW_SCREENSAVER = "SDL_VIDEO_ALLOW_SCREENSAVER",
HINT_VIDEO_X11_XVIDMODE = "SDL_VIDEO_X11_XVIDMODE",
HINT_VIDEO_X11_XINERAMA = "SDL_VIDEO_X11_XINERAMA",
HINT_VIDEO_X11_XRANDR = "SDL_VIDEO_X11_XRANDR",
HINT_VIDEO_X11_NET_WM_PING = "SDL_VIDEO_X11_NET_WM_PING",
HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR = "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR",
HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN = "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN",
HINT_WINDOWS_INTRESOURCE_ICON = "SDL_WINDOWS_INTRESOURCE_ICON",
HINT_WINDOWS_INTRESOURCE_ICON_SMALL = "SDL_WINDOWS_INTRESOURCE_ICON_SMALL",
HINT_WINDOWS_ENABLE_MESSAGELOOP = "SDL_WINDOWS_ENABLE_MESSAGELOOP",
HINT_GRAB_KEYBOARD = "SDL_GRAB_KEYBOARD",
HINT_MOUSE_NORMAL_SPEED_SCALE = "SDL_MOUSE_NORMAL_SPEED_SCALE",
HINT_MOUSE_RELATIVE_SPEED_SCALE = "SDL_MOUSE_RELATIVE_SPEED_SCALE",
HINT_MOUSE_RELATIVE_MODE_WARP = "SDL_MOUSE_RELATIVE_MODE_WARP",
HINT_MOUSE_FOCUS_CLICKTHROUGH = "SDL_MOUSE_FOCUS_CLICKTHROUGH",
HINT_TOUCH_MOUSE_EVENTS = "SDL_TOUCH_MOUSE_EVENTS",
HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS = "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS",
HINT_IDLE_TIMER_DISABLED = "SDL_IOS_IDLE_TIMER_DISABLED",
HINT_ORIENTATIONS = "SDL_IOS_ORIENTATIONS",
HINT_APPLE_TV_CONTROLLER_UI_EVENTS = "SDL_APPLE_TV_CONTROLLER_UI_EVENTS",
HINT_APPLE_TV_REMOTE_ALLOW_ROTATION = "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION",
HINT_IOS_HIDE_HOME_INDICATOR = "SDL_IOS_HIDE_HOME_INDICATOR",
HINT_ACCELEROMETER_AS_JOYSTICK = "SDL_ACCELEROMETER_AS_JOYSTICK",
HINT_TV_REMOTE_AS_JOYSTICK = "SDL_TV_REMOTE_AS_JOYSTICK",
HINT_XINPUT_ENABLED = "SDL_XINPUT_ENABLED",
HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING = "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING",
HINT_GAMECONTROLLERCONFIG = "SDL_GAMECONTROLLERCONFIG",
HINT_GAMECONTROLLER_IGNORE_DEVICES = "SDL_GAMECONTROLLER_IGNORE_DEVICES",
HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT = "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT",
HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS = "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS",
HINT_ALLOW_TOPMOST = "SDL_ALLOW_TOPMOST",
HINT_TIMER_RESOLUTION = "SDL_TIMER_RESOLUTION",
HINT_QTWAYLAND_CONTENT_ORIENTATION = "SDL_QTWAYLAND_CONTENT_ORIENTATION",
HINT_QTWAYLAND_WINDOW_FLAGS = "SDL_QTWAYLAND_WINDOW_FLAGS",
HINT_THREAD_STACK_SIZE = "SDL_THREAD_STACK_SIZE",
HINT_VIDEO_HIGHDPI_DISABLED = "SDL_VIDEO_HIGHDPI_DISABLED",
HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK = "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK",
HINT_VIDEO_WIN_D3DCOMPILER = "SDL_VIDEO_WIN_D3DCOMPILER",
HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT = "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT",
HINT_WINRT_PRIVACY_POLICY_URL = "SDL_WINRT_PRIVACY_POLICY_URL",
HINT_WINRT_PRIVACY_POLICY_LABEL = "SDL_WINRT_PRIVACY_POLICY_LABEL",
HINT_WINRT_HANDLE_BACK_BUTTON = "SDL_WINRT_HANDLE_BACK_BUTTON",
HINT_VIDEO_MAC_FULLSCREEN_SPACES = "SDL_VIDEO_MAC_FULLSCREEN_SPACES",
HINT_MAC_BACKGROUND_APP = "SDL_MAC_BACKGROUND_APP",
HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION = "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION",
HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION = "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION",
HINT_IME_INTERNAL_EDITING = "SDL_IME_INTERNAL_EDITING",
HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH = "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH",
HINT_RETURN_KEY_HIDES_IME = "SDL_RETURN_KEY_HIDES_IME",
HINT_EMSCRIPTEN_KEYBOARD_ELEMENT = "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT",
HINT_NO_SIGNAL_HANDLERS = "SDL_NO_SIGNAL_HANDLERS",
HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 = "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4",
HINT_BMP_SAVE_LEGACY_FORMAT = "SDL_BMP_SAVE_LEGACY_FORMAT",
HINT_WINDOWS_DISABLE_THREAD_NAMING = "SDL_WINDOWS_DISABLE_THREAD_NAMING",
HINT_RPI_VIDEO_LAYER = "SDL_RPI_VIDEO_LAYER",
HINT_VIDEO_DOUBLE_BUFFER = "SDL_VIDEO_DOUBLE_BUFFER",
HINT_OPENGL_ES_DRIVER = "SDL_OPENGL_ES_DRIVER",
HINT_AUDIO_RESAMPLING_MODE = "SDL_AUDIO_RESAMPLING_MODE",
HINT_AUDIO_CATEGORY = "SDL_AUDIO_CATEGORY",
}
function library.CreateVulkanSurface(window, instance)
local box = ffi.new("struct VkSurfaceKHR_T * [1]")
if library.Vulkan_CreateSurface(window, instance, ffi.cast("void**", box)) == nil then
return nil, ffi.string(library.GetError())
end
return box[0]
end
function library.GetRequiredInstanceExtensions(wnd, extra)
local count = ffi.new("uint32_t[1]")
if library.Vulkan_GetInstanceExtensions(wnd, count, nil) == 0 then
return nil, ffi.string(library.GetError())
end
local array = ffi.new("const char *[?]", count[0])
if library.Vulkan_GetInstanceExtensions(wnd, count, array) == 0 then
return nil, ffi.string(library.GetError())
end
local out = {}
for i = 0, count[0] - 1 do
table.insert(out, ffi.string(array[i]))
end
if extra then
for i,v in ipairs(extra) do
table.insert(out, v)
end
end
return out
end
library.clib = CLIB
return library
end package.preload.msgpack = function(...) --[[lit-meta
name = "creationix/msgpack"
version = "2.3.0"
description = "A pure lua implementation of the msgpack format."
homepage = "https://github.com/creationix/msgpack-lua"
keywords = {"codec", "msgpack"}
license = "MIT"
]]
local floor = math.floor
local ceil = math.ceil
local huge = math.huge
local char = string.char
local byte = string.byte
local sub = string.sub
local bit = require('bit')
local rshift = bit.rshift
local lshift = bit.lshift
local band = bit.band
local bor = bit.bor
local concat = table.concat
local ffi = require('ffi')
local dbox = ffi.new("double[1]")
local fbox = ffi.new("float[1]")
local cast = ffi.cast
local copy = ffi.copy
local bigEndian
do
local a= ffi.new("int16_t[1]")
a[0] = 1
local b = ffi.cast("uint8_t*", a)
bigEndian = b[0] == 0
end
local buffer = ffi.typeof('uint8_t[?]')
local function write16(num)
return char(rshift(num, 8), band(num, 0xff))
end
local function write32(num)
return char(
rshift(num, 24),
band(rshift(num, 16), 0xff),
band(rshift(num, 8), 0xff),
band(num, 0xff))
end
local function read16(data, offset)
return bor(
lshift(byte(data, offset), 8),
byte(data, offset + 1))
end
local function read32(data, offset)
return bor(
lshift(byte(data, offset), 24),
lshift(byte(data, offset + 1), 16),
lshift(byte(data, offset + 2), 8),
byte(data, offset + 3))
end
local function encode(value)
local t = type(value)
if t == "nil" then
return "\xc0"
elseif t == "boolean" then
return value and "\xc3" or "\xc2"
elseif t == "number" then
if value == huge or value == -huge or value ~= value then
-- Encode Infinity, -Infinity and NaN as floats
fbox[0] = value;
local bytes = cast("uint8_t*", fbox)
if bigEndian then
return char(0xCA,
bytes[0],
bytes[1],
bytes[2],
bytes[3])
else
return char(0xCA,
bytes[3],
bytes[2],
bytes[1],
bytes[0])
end
elseif floor(value) ~= value then
-- Encode other non-ints as doubles
dbox[0] = value;
local bytes = cast("uint8_t*", dbox)
if bigEndian then
return char(0xCB,
bytes[0],
bytes[1],
bytes[2],
bytes[3],
bytes[4],
bytes[5],
bytes[6],
bytes[7])
else
return char(0xCB,
bytes[7],
bytes[6],
bytes[5],
bytes[4],
bytes[3],
bytes[2],
bytes[1],
bytes[0])
end
else
-- Encode as smallest integer type that fits
if value >= 0 then
if value < 0x80 then
return char(value)
elseif value < 0x100 then
return "\xcc" .. char(value)
elseif value < 0x10000 then
return "\xcd" .. write16(value)
elseif value < 0x100000000 then
return "\xce" .. write32(value)
else
return "\xcf"
.. write32(floor(value / 0x100000000))
.. write32(value % 0x100000000)
end
else
if value >= -0x20 then
return char(0x100 + value)
elseif value >= -0x80 then
return "\xd0" .. char(0x100 + value)
elseif value >= -0x8000 then
return "\xd1" .. write16(0x10000 + value)
elseif value >= -0x80000000 then
return "\xd2" .. write32(0x100000000 + value)
elseif value >= -0x100000000 then
return "\xd3\xff\xff\xff\xff"
.. write32(0x100000000 + value)
else
local high = ceil(value / 0x100000000)
local low = value - high * 0x100000000
if low == 0 then
high = 0x100000000 + high
else
high = 0xffffffff + high
low = 0x100000000 + low
end
return "\xd3" .. write32(high) .. write32(low)
end
end
end
elseif t == "string" then
local l = #value
if l < 0x20 then
return char(bor(0xa0, l)) .. value
elseif l < 0x100 then
return "\xd9" .. char(l) .. value
elseif l < 0x10000 then
return "\xda" .. write16(l) .. value
elseif l < 0x100000000 then
return "\xdb" .. write32(l) .. value
else
error("String too long: " .. l .. " bytes")
end
elseif t == "cdata" then
local l = ffi.sizeof(value)
value = ffi.string(value, l)
if l < 0x100 then
return "\xc4" .. char(l) .. value
elseif l < 0x10000 then
return "\xc5" .. write16(l) .. value
elseif l < 0x100000000 then
return "\xc6" .. write32(l) .. value
else
error("Buffer too long: " .. l .. " bytes")
end
elseif t == "table" then
local isMap = false
local index = 1
local max = 0
for key in pairs(value) do
if type(key) ~= "number" or key < 1 or (key > 10 and key ~= index) then
isMap = true
break
else
max = key
index = index + 1
end
end
if isMap then
local count = 0
local parts = {}
for key, part in pairs(value) do
parts[#parts + 1] = encode(key)
parts[#parts + 1] = encode(part)
count = count + 1
end
value = concat(parts)
if count < 16 then
return char(bor(0x80, count)) .. value
elseif count < 0x10000 then
return "\xde" .. write16(count) .. value
elseif count < 0x100000000 then
return "\xdf" .. write32(count) .. value
else
error("map too big: " .. count)
end
else
local parts = {}
local l = max
for i = 1, l do
parts[i] = encode(value[i])
end
value = concat(parts)
if l < 0x10 then
return char(bor(0x90, l)) .. value
elseif l < 0x10000 then
return "\xdc" .. write16(l) .. value
elseif l < 0x100000000 then
return "\xdd" .. write32(l) .. value
else
warning("Array too long: " .. l .. "items")
end
end
else
warning("Unknown type: " .. t)
end
end
local readmap, readarray
local function decode(data, offset)
local c = byte(data, offset + 1)
if c < 0x80 then
return c, 1
elseif c >= 0xe0 then
return c - 0x100, 1
elseif c < 0x90 then
return readmap(band(c, 0xf), data, offset, offset + 1)
elseif c < 0xa0 then
return readarray(band(c, 0xf), data, offset, offset + 1)
elseif c < 0xc0 then
local len = 1 + band(c, 0x1f)
return sub(data, offset + 2, offset + len), len
elseif c == 0xc0 then
return nil, 1
elseif c == 0xc2 then
return false, 1
elseif c == 0xc3 then
return true, 1
elseif c == 0xcc then
return byte(data, offset + 2), 2
elseif c == 0xcd then
return read16(data, offset + 2), 3
elseif c == 0xce then
return read32(data, offset + 2) % 0x100000000, 5
elseif c == 0xcf then
return (read32(data, offset + 2) % 0x100000000) * 0x100000000
+ (read32(data, offset + 6) % 0x100000000), 9
elseif c == 0xd0 then
local num = byte(data, offset + 2)
return (num >= 0x80 and (num - 0x100) or num), 2
elseif c == 0xd1 then
local num = read16(data, offset + 2)
return (num >= 0x8000 and (num - 0x10000) or num), 3
elseif c == 0xd2 then
return read32(data, offset + 2), 5
elseif c == 0xd3 then
local high = read32(data, offset + 2)
local low = read32(data, offset + 6)
if low < 0 then
high = high + 1
end
return high * 0x100000000 + low, 9
elseif c == 0xd9 then
local len = 2 + byte(data, offset + 2)
return sub(data, offset + 3, offset + len), len
elseif c == 0xda then
local len = 3 + read16(data, offset + 2)
return sub(data, offset + 4, offset + len), len
elseif c == 0xdb then
local len = 5 + read32(data, offset + 2) % 0x100000000
return sub(data, offset + 6, offset + len), len
elseif c == 0xc4 then
local bytes = byte(data, offset + 2)
local len = 2 + bytes
return buffer(bytes, sub(data, offset + 3, offset + len)), len
elseif c == 0xc5 then
local bytes = read16(data, offset + 2)
local len = 3 + bytes
return buffer(bytes, sub(data, offset + 4, offset + len)), len
elseif c == 0xc6 then
local bytes = read32(data, offset + 2) % 0x100000000
local len = 5 + bytes
return buffer(bytes, sub(data, offset + 6, offset + len)), len
elseif c == 0xca then
if bigEndian then
copy(fbox, sub(data, 2, 5))
else
copy(fbox, char(
byte(data, offset + 5),
byte(data, offset + 4),
byte(data, offset + 3),
byte(data, offset + 2)
))
end
return fbox[0], 5
elseif c == 0xcb then
if bigEndian then
copy(dbox, sub(data, 2, 9))
else
copy(dbox, char(
byte(data, offset + 9),
byte(data, offset + 8),
byte(data, offset + 7),
byte(data, offset + 6),
byte(data, offset + 5),
byte(data, offset + 4),
byte(data, offset + 3),
byte(data, offset + 2)
))
end
return dbox[0], 9
elseif c == 0xdc then
return readarray(read16(data, offset + 2), data, offset, offset + 3)
elseif c == 0xdd then
return readarray(read32(data, offset + 2) % 0x100000000, data, offset, offset + 5)
elseif c == 0xde then
return readmap(read16(data, offset + 2), data, offset, offset + 3)
elseif c == 0xdf then
return readmap(read32(data, offset + 2) % 0x100000000, data, offset, offset + 5)
else
error("TODO: more types: " .. string.format("%02x", c))
end
end
function readarray(count, data, offset, start)
local items = {}
for i = 1, count do
local len
items[i], len = decode(data, start)
start = start + len
end
return items, start - offset
end
function readmap(count, data, offset, start)
local map = {}
for _ = 1, count do
local len, key
key, len = decode(data, start)
start = start + len
map[key], len = decode(data, start)
start = start + len
end
return map, start - offset
end
return {
encode = encode,
decode = function (data, offset)
return decode(data, offset or 0)
end
}
end package.preload.alc = function(...) local ffi = require("ffi")
ffi.cdef([[struct ALCdevice_struct {};
struct ALCcontext_struct {};
void(alcDestroyContext)(struct ALCcontext_struct*);
void(alcCaptureStop)(struct ALCdevice_struct*);
void(alcGetIntegerv)(struct ALCdevice_struct*,int,int,int*);
void(alcCaptureSamples)(struct ALCdevice_struct*,void*,int);
const char*(alcGetString)(struct ALCdevice_struct*,int);
struct ALCcontext_struct*(alcGetCurrentContext)();
struct ALCcontext_struct*(alcGetThreadContext)();
int(alcGetError)(struct ALCdevice_struct*);
char(alcResetDeviceSOFT)(struct ALCdevice_struct*,const int*);
void(alcRenderSamplesSOFT)(struct ALCdevice_struct*,void*,int);
void(alcDeviceResumeSOFT)(struct ALCdevice_struct*);
void*(alcGetProcAddress)(struct ALCdevice_struct*,const char*);
struct ALCcontext_struct*(alcCreateContext)(struct ALCdevice_struct*,const int*);
const char*(alcGetStringiSOFT)(struct ALCdevice_struct*,int,int);
void(alcDevicePauseSOFT)(struct ALCdevice_struct*);
void(alcSuspendContext)(struct ALCcontext_struct*);
struct ALCdevice_struct*(alcOpenDevice)(const char*);
char(alcMakeContextCurrent)(struct ALCcontext_struct*);
struct ALCdevice_struct*(alcGetContextsDevice)(struct ALCcontext_struct*);
int(alcGetEnumValue)(struct ALCdevice_struct*,const char*);
char(alcIsRenderFormatSupportedSOFT)(struct ALCdevice_struct*,int,int,int);
char(alcSetThreadContext)(struct ALCcontext_struct*);
char(alcCaptureCloseDevice)(struct ALCdevice_struct*);
struct ALCdevice_struct*(alcCaptureOpenDevice)(const char*,unsigned int,int,int);
char(alcIsExtensionPresent)(struct ALCdevice_struct*,const char*);
void(alcCaptureStart)(struct ALCdevice_struct*);
void(alcProcessContext)(struct ALCcontext_struct*);
char(alcCloseDevice)(struct ALCdevice_struct*);
struct ALCdevice_struct*(alcLoopbackOpenDeviceSOFT)(const char*);
]])
local CLIB = ffi.load(_G.FFI_LIB or "openal")
local library = {}
library = {
DestroyContext = CLIB.alcDestroyContext,
CaptureStop = CLIB.alcCaptureStop,
GetIntegerv = CLIB.alcGetIntegerv,
CaptureSamples = CLIB.alcCaptureSamples,
GetString = CLIB.alcGetString,
GetCurrentContext = CLIB.alcGetCurrentContext,
GetThreadContext = CLIB.alcGetThreadContext,
GetError = CLIB.alcGetError,
ResetDeviceSOFT = CLIB.alcResetDeviceSOFT,
RenderSamplesSOFT = CLIB.alcRenderSamplesSOFT,
DeviceResumeSOFT = CLIB.alcDeviceResumeSOFT,
GetProcAddress = CLIB.alcGetProcAddress,
CreateContext = CLIB.alcCreateContext,
GetStringiSOFT = CLIB.alcGetStringiSOFT,
DevicePauseSOFT = CLIB.alcDevicePauseSOFT,
SuspendContext = CLIB.alcSuspendContext,
OpenDevice = CLIB.alcOpenDevice,
MakeContextCurrent = CLIB.alcMakeContextCurrent,
GetContextsDevice = CLIB.alcGetContextsDevice,
GetEnumValue = CLIB.alcGetEnumValue,
IsRenderFormatSupportedSOFT = CLIB.alcIsRenderFormatSupportedSOFT,
SetThreadContext = CLIB.alcSetThreadContext,
CaptureCloseDevice = CLIB.alcCaptureCloseDevice,
CaptureOpenDevice = CLIB.alcCaptureOpenDevice,
IsExtensionPresent = CLIB.alcIsExtensionPresent,
CaptureStart = CLIB.alcCaptureStart,
ProcessContext = CLIB.alcProcessContext,
CloseDevice = CLIB.alcCloseDevice,
LoopbackOpenDeviceSOFT = CLIB.alcLoopbackOpenDeviceSOFT,
}
local AL_TRUE = 1
local AL_FALSE = 0
local AL_INVALID_ENUM = 40962
library.e = {
API = 1,
API = extern,
APIENTRY = __cdecl,
APIENTRY = 1,
INVALID = 0,
VERSION_0_1 = 1,
FALSE = 0,
TRUE = 1,
FREQUENCY = 4103,
REFRESH = 4104,
SYNC = 4105,
MONO_SOURCES = 4112,
STEREO_SOURCES = 4113,
NO_ERROR = 0,
INVALID_DEVICE = 40961,
INVALID_CONTEXT = 40962,
INVALID_ENUM = 40963,
INVALID_VALUE = 40964,
OUT_OF_MEMORY = 40965,
MAJOR_VERSION = 4096,
MINOR_VERSION = 4097,
ATTRIBUTES_SIZE = 4098,
ALL_ATTRIBUTES = 4099,
DEFAULT_DEVICE_SPECIFIER = 4100,
DEVICE_SPECIFIER = 4101,
EXTENSIONS = 4102,
EXT_CAPTURE = 1,
CAPTURE_DEVICE_SPECIFIER = 784,
CAPTURE_DEFAULT_DEVICE_SPECIFIER = 785,
CAPTURE_SAMPLES = 786,
ENUMERATE_ALL_EXT = 1,
DEFAULT_ALL_DEVICES_SPECIFIER = 4114,
ALL_DEVICES_SPECIFIER = 4115,
LOKI_audio_channel = 1,
CHAN_MAIN_LOKI = 5242881,
CHAN_PCM_LOKI = 5242882,
CHAN_CD_LOKI = 5242883,
EXT_EFX = 1,
EXT_disconnect = 1,
CONNECTED = 787,
EXT_thread_local_context = 1,
EXT_DEDICATED = 1,
SOFT_loopback = 1,
FORMAT_CHANNELS_SOFT = 6544,
FORMAT_TYPE_SOFT = 6545,
BYTE_SOFT = 5120,
UNSIGNED_BYTE_SOFT = 5121,
SHORT_SOFT = 5122,
UNSIGNED_SHORT_SOFT = 5123,
INT_SOFT = 5124,
UNSIGNED_INT_SOFT = 5125,
FLOAT_SOFT = 5126,
MONO_SOFT = 5376,
STEREO_SOFT = 5377,
QUAD_SOFT = 5379,
_5POINT1_SOFT = 5380,
_6POINT1_SOFT = 5381,
_7POINT1_SOFT = 5382,
EXT_DEFAULT_FILTER_ORDER = 1,
DEFAULT_FILTER_ORDER = 4352,
SOFT_pause_device = 1,
SOFT_HRTF = 1,
HRTF_SOFT = 6546,
DONT_CARE_SOFT = 2,
HRTF_STATUS_SOFT = 6547,
HRTF_DISABLED_SOFT = 0,
HRTF_ENABLED_SOFT = 1,
HRTF_DENIED_SOFT = 2,
HRTF_REQUIRED_SOFT = 3,
HRTF_HEADPHONES_DETECTED_SOFT = 4,
HRTF_UNSUPPORTED_FORMAT_SOFT = 5,
NUM_HRTF_SPECIFIERS_SOFT = 6548,
HRTF_SPECIFIER_SOFT = 6549,
HRTF_ID_SOFT = 6550,
SOFT_output_limiter = 1,
OUTPUT_LIMITER_SOFT = 6554,
EXT_EFX_NAME = "ALC_EXT_EFX",
EFX_MAJOR_VERSION = 131073,
EFX_MINOR_VERSION = 131074,
MAX_AUXILIARY_SENDS = 131075,
}
function library.GetErrorString(device)
local num = library.GetError(device)
if num == library.e.NO_ERROR then
return "no error"
elseif num == library.e.INVALID_DEVICE then
return "invalid device"
elseif num == library.e.INVALID_CONTEXT then
return "invalid context"
elseif num == library.e.INVALID_ENUM then
return "invalid enum"
elseif num == library.e.INVALID_VALUE then
return "invalid value"
elseif num == library.e.OUT_OF_MEMORY then
return "out of memory"
end
end
library.clib = CLIB
return library
end package.preload.al = function(...) local ffi = require("ffi")
ffi.cdef([[void(alGetBufferSamplesSOFT)(unsigned int,int,int,int,int,void*);
void(alGetEffectfv)(unsigned int,int,float*);
void(alEffectf)(unsigned int,int,float);
void(alBufferi)(unsigned int,int,int);
void(alSourceRewind)(unsigned int);
void(alListenerf)(int,float);
void(alDeleteEffects)(int,const unsigned int*);
void(alGetAuxiliaryEffectSlotf)(unsigned int,int,float*);
void(alGetFilteri)(unsigned int,int,int*);
void(alAuxiliaryEffectSlotiv)(unsigned int,int,const int*);
void(alGetSource3f)(unsigned int,int,float*,float*,float*);
void(alGetSourceiv)(unsigned int,int,int*);
void(alGetBufferi)(unsigned int,int,int*);
void(alSourcePlay)(unsigned int);
void(alSourcePause)(unsigned int);
char(alIsExtensionPresent)(const char*);
void(alGenEffects)(int,unsigned int*);
void(alGetListenerfv)(int,float*);
void(alGetListener3f)(int,float*,float*,float*);
void(alSourcef)(unsigned int,int,float);
void(alGetBufferiv)(unsigned int,int,int*);
void(alListener3i)(int,int,int,int);
void(alDopplerFactor)(float);
void(alListener3f)(int,float,float,float);
void(alBufferSamplesSOFT)(unsigned int,unsigned int,int,int,int,int,const void*);
void(alEffectfv)(unsigned int,int,const float*);
void(alGetEffectf)(unsigned int,int,float*);
void(alDeferUpdatesSOFT)();
void(alBufferData)(unsigned int,int,const void*,int,int);
void(alDeleteSources)(int,const unsigned int*);
int(alGetEnumValue)(const char*);
void(alProcessUpdatesSOFT)();
void(alGetSource3i)(unsigned int,int,int*,int*,int*);
char(alIsSource)(unsigned int);
void(alListeneri)(int,int);
void(alBuffer3i)(unsigned int,int,int,int,int);
void(alGetListenerf)(int,float*);
void(alGetFilterfv)(unsigned int,int,float*);
void(alSource3i64SOFT)(unsigned int,int,signed long,signed long,signed long);
void(alGetListener3i)(int,int*,int*,int*);
int(alGetInteger)(int);
void(alGetSource3i64SOFT)(unsigned int,int,signed long*,signed long*,signed long*);
void(alSourcePlayv)(int,const unsigned int*);
void(alSourceRewindv)(int,const unsigned int*);
void(alListenerfv)(int,const float*);
void(alGetBufferf)(unsigned int,int,float*);
void(alGetSourcei64SOFT)(unsigned int,int,signed long*);
void(alEnable)(int);
void(alDistanceModel)(int);
void(alBufferDataStatic)(const int,int,void*,int,int);
void(alSourceQueueBuffers)(unsigned int,int,const unsigned int*);
void(alRequestFoldbackStart)(int,int,int,float*,void(*callback)(int,int));
void(alGetIntegerv)(int,int*);
char(alIsBufferFormatSupportedSOFT)(int);
char(alIsBuffer)(unsigned int);
void(alGenSources)(int,unsigned int*);
float(alGetFloat)(int);
void(alSourcedSOFT)(unsigned int,int,double);
void(alGetSourcef)(unsigned int,int,float*);
char(alIsFilter)(unsigned int);
double(alGetDouble)(int);
const char*(alGetStringiSOFT)(int,int);
void(alGenFilters)(int,unsigned int*);
void(alGetSourcei64vSOFT)(unsigned int,int,signed long*);
int(alGetError)();
void(alSourcei64SOFT)(unsigned int,int,signed long);
void(alEffectiv)(unsigned int,int,const int*);
void(alGetSourcedvSOFT)(unsigned int,int,double*);
void(alBufferSubDataSOFT)(unsigned int,int,const void*,int,int);
void(alFilteriv)(unsigned int,int,const int*);
void(alGetSource3dSOFT)(unsigned int,int,double*,double*,double*);
void(alGetSourcedSOFT)(unsigned int,int,double*);
void(alGetListeneri)(int,int*);
void(alBufferfv)(unsigned int,int,const float*);
void(alSourcedvSOFT)(unsigned int,int,const double*);
void(alDisable)(int);
void(alSourceStop)(unsigned int);
void(alSource3dSOFT)(unsigned int,int,double,double,double);
void(alGetBuffer3i)(unsigned int,int,int*,int*,int*);
void(alBufferSubSamplesSOFT)(unsigned int,int,int,int,int,const void*);
char(alIsEffect)(unsigned int);
void(alGetFloatv)(int,float*);
void(alGetDoublev)(int,double*);
void(alGetSourcei)(unsigned int,int,int*);
char(alIsAuxiliaryEffectSlot)(unsigned int);
void(alAuxiliaryEffectSlotfv)(unsigned int,int,const float*);
void(alGetAuxiliaryEffectSlotfv)(unsigned int,int,float*);
void(alFilterf)(unsigned int,int,float);
void(alGetAuxiliaryEffectSlotiv)(unsigned int,int,int*);
void(alGetAuxiliaryEffectSloti)(unsigned int,int,int*);
void(alAuxiliaryEffectSlotf)(unsigned int,int,float);
void(alSource3i)(unsigned int,int,int,int,int);
void(alSourceStopv)(int,const unsigned int*);
void(alRequestFoldbackStop)();
void(alBufferiv)(unsigned int,int,const int*);
const char*(alGetString)(int);
void(alBuffer3f)(unsigned int,int,float,float,float);
void(alSourceiv)(unsigned int,int,const int*);
void(alSpeedOfSound)(float);
void(alSourceUnqueueBuffers)(unsigned int,int,unsigned int*);
void(alGetEffecti)(unsigned int,int,int*);
void(alDeleteBuffers)(int,const unsigned int*);
void(alGenBuffers)(int,unsigned int*);
void(alGetBuffer3f)(unsigned int,int,float*,float*,float*);
void(alDeleteAuxiliaryEffectSlots)(int,const unsigned int*);
void(alListeneriv)(int,const int*);
void(alSourcei64vSOFT)(unsigned int,int,const signed long*);
void(alDeleteFilters)(int,const unsigned int*);
void(alAuxiliaryEffectSloti)(unsigned int,int,int);
void(alSourcei)(unsigned int,int,int);
void(alGetFilterf)(unsigned int,int,float*);
void(alGenAuxiliaryEffectSlots)(int,unsigned int*);
void(alSourcefv)(unsigned int,int,const float*);
void(alSource3f)(unsigned int,int,float,float,float);
char(alGetBoolean)(int);
void(alGetSourcefv)(unsigned int,int,float*);
void(alGetListeneriv)(int,int*);
void(alDopplerVelocity)(float);
void(alFilterfv)(unsigned int,int,const float*);
void(alGetBooleanv)(int,char*);
void(alBufferf)(unsigned int,int,float);
void(alGetBufferfv)(unsigned int,int,float*);
char(alIsEnabled)(int);
void(alEffecti)(unsigned int,int,int);
void*(alGetProcAddress)(const char*);
void(alGetEffectiv)(unsigned int,int,int*);
void(alGetFilteriv)(unsigned int,int,int*);
void(alSourcePausev)(int,const unsigned int*);
void(alFilteri)(unsigned int,int,int);
]])
local CLIB = ffi.load(_G.FFI_LIB or "openal")
local library = {}
local function get_proc_address(func, cast)
local ptr = CLIB.alGetProcAddress(func)
if ptr ~= nil then
return ffi.cast(cast, ptr)
end
end
library = {
GetBufferSamplesSOFT = get_proc_address("alGetBufferSamplesSOFT", "void(* )( unsigned int , int , int , int , int , void * )"),
GetEffectfv = get_proc_address("alGetEffectfv", "void(* )( unsigned int , int , float * )"),
Effectf = get_proc_address("alEffectf", "void(* )( unsigned int , int , float )"),
Bufferi = get_proc_address("alBufferi", "void(* )( unsigned int , int , int )"),
SourceRewind = get_proc_address("alSourceRewind", "void(* )( unsigned int )"),
Listenerf = get_proc_address("alListenerf", "void(* )( int , float )"),
DeleteEffects = get_proc_address("alDeleteEffects", "void(* )( int , const unsigned int * )"),
GetAuxiliaryEffectSlotf = get_proc_address("alGetAuxiliaryEffectSlotf", "void(* )( unsigned int , int , float * )"),
GetFilteri = get_proc_address("alGetFilteri", "void(* )( unsigned int , int , int * )"),
AuxiliaryEffectSlotiv = get_proc_address("alAuxiliaryEffectSlotiv", "void(* )( unsigned int , int , const int * )"),
GetSource3f = get_proc_address("alGetSource3f", "void(* )( unsigned int , int , float * , float * , float * )"),
GetSourceiv = get_proc_address("alGetSourceiv", "void(* )( unsigned int , int , int * )"),
GetBufferi = get_proc_address("alGetBufferi", "void(* )( unsigned int , int , int * )"),
SourcePlay = get_proc_address("alSourcePlay", "void(* )( unsigned int )"),
SourcePause = get_proc_address("alSourcePause", "void(* )( unsigned int )"),
IsExtensionPresent = get_proc_address("alIsExtensionPresent", "char(* )( const char * )"),
GenEffects = get_proc_address("alGenEffects", "void(* )( int , unsigned int * )"),
GetListenerfv = get_proc_address("alGetListenerfv", "void(* )( int , float * )"),
GetListener3f = get_proc_address("alGetListener3f", "void(* )( int , float * , float * , float * )"),
Sourcef = get_proc_address("alSourcef", "void(* )( unsigned int , int , float )"),
GetBufferiv = get_proc_address("alGetBufferiv", "void(* )( unsigned int , int , int * )"),
Listener3i = get_proc_address("alListener3i", "void(* )( int , int , int , int )"),
DopplerFactor = get_proc_address("alDopplerFactor", "void(* )( float )"),
Listener3f = get_proc_address("alListener3f", "void(* )( int , float , float , float )"),
BufferSamplesSOFT = get_proc_address("alBufferSamplesSOFT", "void(* )( unsigned int , unsigned int , int , int , int , int , const void * )"),
Effectfv = get_proc_address("alEffectfv", "void(* )( unsigned int , int , const float * )"),
GetEffectf = get_proc_address("alGetEffectf", "void(* )( unsigned int , int , float * )"),
DeferUpdatesSOFT = get_proc_address("alDeferUpdatesSOFT", "void(* )( )"),
BufferData = get_proc_address("alBufferData", "void(* )( unsigned int , int , const void * , int , int )"),
DeleteSources = get_proc_address("alDeleteSources", "void(* )( int , const unsigned int * )"),
GetEnumValue = get_proc_address("alGetEnumValue", "int(* )( const char * )"),
ProcessUpdatesSOFT = get_proc_address("alProcessUpdatesSOFT", "void(* )( )"),
GetSource3i = get_proc_address("alGetSource3i", "void(* )( unsigned int , int , int * , int * , int * )"),
IsSource = get_proc_address("alIsSource", "char(* )( unsigned int )"),
Listeneri = get_proc_address("alListeneri", "void(* )( int , int )"),
Buffer3i = get_proc_address("alBuffer3i", "void(* )( unsigned int , int , int , int , int )"),
GetListenerf = get_proc_address("alGetListenerf", "void(* )( int , float * )"),
GetFilterfv = get_proc_address("alGetFilterfv", "void(* )( unsigned int , int , float * )"),
Source3i64SOFT = get_proc_address("alSource3i64SOFT", "void(* )( unsigned int , int , signed long , signed long , signed long )"),
GetListener3i = get_proc_address("alGetListener3i", "void(* )( int , int * , int * , int * )"),
GetInteger = get_proc_address("alGetInteger", "int(* )( int )"),
GetSource3i64SOFT = get_proc_address("alGetSource3i64SOFT", "void(* )( unsigned int , int , signed long * , signed long * , signed long * )"),
SourcePlayv = get_proc_address("alSourcePlayv", "void(* )( int , const unsigned int * )"),
SourceRewindv = get_proc_address("alSourceRewindv", "void(* )( int , const unsigned int * )"),
Listenerfv = get_proc_address("alListenerfv", "void(* )( int , const float * )"),
GetBufferf = get_proc_address("alGetBufferf", "void(* )( unsigned int , int , float * )"),
GetSourcei64SOFT = get_proc_address("alGetSourcei64SOFT", "void(* )( unsigned int , int , signed long * )"),
Enable = get_proc_address("alEnable", "void(* )( int )"),
DistanceModel = get_proc_address("alDistanceModel", "void(* )( int )"),
BufferDataStatic = get_proc_address("alBufferDataStatic", "void(* )( const int , int , void * , int , int )"),
SourceQueueBuffers = get_proc_address("alSourceQueueBuffers", "void(* )( unsigned int , int , const unsigned int * )"),
RequestFoldbackStart = get_proc_address("alRequestFoldbackStart", "void(* )( int , int , int , float * , void(* callback)( int , int ) )"),
GetIntegerv = get_proc_address("alGetIntegerv", "void(* )( int , int * )"),
IsBufferFormatSupportedSOFT = get_proc_address("alIsBufferFormatSupportedSOFT", "char(* )( int )"),
IsBuffer = get_proc_address("alIsBuffer", "char(* )( unsigned int )"),
GenSources = get_proc_address("alGenSources", "void(* )( int , unsigned int * )"),
GetFloat = get_proc_address("alGetFloat", "float(* )( int )"),
SourcedSOFT = get_proc_address("alSourcedSOFT", "void(* )( unsigned int , int , double )"),
GetSourcef = get_proc_address("alGetSourcef", "void(* )( unsigned int , int , float * )"),
IsFilter = get_proc_address("alIsFilter", "char(* )( unsigned int )"),
GetDouble = get_proc_address("alGetDouble", "double(* )( int )"),
GetStringiSOFT = get_proc_address("alGetStringiSOFT", "const char *(* )( int , int )"),
GenFilters = get_proc_address("alGenFilters", "void(* )( int , unsigned int * )"),
GetSourcei64vSOFT = get_proc_address("alGetSourcei64vSOFT", "void(* )( unsigned int , int , signed long * )"),
GetError = get_proc_address("alGetError", "int(* )( )"),
Sourcei64SOFT = get_proc_address("alSourcei64SOFT", "void(* )( unsigned int , int , signed long )"),
Effectiv = get_proc_address("alEffectiv", "void(* )( unsigned int , int , const int * )"),
GetSourcedvSOFT = get_proc_address("alGetSourcedvSOFT", "void(* )( unsigned int , int , double * )"),
BufferSubDataSOFT = get_proc_address("alBufferSubDataSOFT", "void(* )( unsigned int , int , const void * , int , int )"),
Filteriv = get_proc_address("alFilteriv", "void(* )( unsigned int , int , const int * )"),
GetSource3dSOFT = get_proc_address("alGetSource3dSOFT", "void(* )( unsigned int , int , double * , double * , double * )"),
GetSourcedSOFT = get_proc_address("alGetSourcedSOFT", "void(* )( unsigned int , int , double * )"),
GetListeneri = get_proc_address("alGetListeneri", "void(* )( int , int * )"),
Bufferfv = get_proc_address("alBufferfv", "void(* )( unsigned int , int , const float * )"),
SourcedvSOFT = get_proc_address("alSourcedvSOFT", "void(* )( unsigned int , int , const double * )"),
Disable = get_proc_address("alDisable", "void(* )( int )"),
SourceStop = get_proc_address("alSourceStop", "void(* )( unsigned int )"),
Source3dSOFT = get_proc_address("alSource3dSOFT", "void(* )( unsigned int , int , double , double , double )"),
GetBuffer3i = get_proc_address("alGetBuffer3i", "void(* )( unsigned int , int , int * , int * , int * )"),
BufferSubSamplesSOFT = get_proc_address("alBufferSubSamplesSOFT", "void(* )( unsigned int , int , int , int , int , const void * )"),
IsEffect = get_proc_address("alIsEffect", "char(* )( unsigned int )"),
GetFloatv = get_proc_address("alGetFloatv", "void(* )( int , float * )"),
GetDoublev = get_proc_address("alGetDoublev", "void(* )( int , double * )"),
GetSourcei = get_proc_address("alGetSourcei", "void(* )( unsigned int , int , int * )"),
IsAuxiliaryEffectSlot = get_proc_address("alIsAuxiliaryEffectSlot", "char(* )( unsigned int )"),
AuxiliaryEffectSlotfv = get_proc_address("alAuxiliaryEffectSlotfv", "void(* )( unsigned int , int , const float * )"),
GetAuxiliaryEffectSlotfv = get_proc_address("alGetAuxiliaryEffectSlotfv", "void(* )( unsigned int , int , float * )"),
Filterf = get_proc_address("alFilterf", "void(* )( unsigned int , int , float )"),
GetAuxiliaryEffectSlotiv = get_proc_address("alGetAuxiliaryEffectSlotiv", "void(* )( unsigned int , int , int * )"),
GetAuxiliaryEffectSloti = get_proc_address("alGetAuxiliaryEffectSloti", "void(* )( unsigned int , int , int * )"),
AuxiliaryEffectSlotf = get_proc_address("alAuxiliaryEffectSlotf", "void(* )( unsigned int , int , float )"),
Source3i = get_proc_address("alSource3i", "void(* )( unsigned int , int , int , int , int )"),
SourceStopv = get_proc_address("alSourceStopv", "void(* )( int , const unsigned int * )"),
RequestFoldbackStop = get_proc_address("alRequestFoldbackStop", "void(* )( )"),
Bufferiv = get_proc_address("alBufferiv", "void(* )( unsigned int , int , const int * )"),
GetString = get_proc_address("alGetString", "const char *(* )( int )"),
Buffer3f = get_proc_address("alBuffer3f", "void(* )( unsigned int , int , float , float , float )"),
Sourceiv = get_proc_address("alSourceiv", "void(* )( unsigned int , int , const int * )"),
SpeedOfSound = get_proc_address("alSpeedOfSound", "void(* )( float )"),
SourceUnqueueBuffers = get_proc_address("alSourceUnqueueBuffers", "void(* )( unsigned int , int , unsigned int * )"),
GetEffecti = get_proc_address("alGetEffecti", "void(* )( unsigned int , int , int * )"),
DeleteBuffers = get_proc_address("alDeleteBuffers", "void(* )( int , const unsigned int * )"),
GenBuffers = get_proc_address("alGenBuffers", "void(* )( int , unsigned int * )"),
GetBuffer3f = get_proc_address("alGetBuffer3f", "void(* )( unsigned int , int , float * , float * , float * )"),
DeleteAuxiliaryEffectSlots = get_proc_address("alDeleteAuxiliaryEffectSlots", "void(* )( int , const unsigned int * )"),
Listeneriv = get_proc_address("alListeneriv", "void(* )( int , const int * )"),
Sourcei64vSOFT = get_proc_address("alSourcei64vSOFT", "void(* )( unsigned int , int , const signed long * )"),
DeleteFilters = get_proc_address("alDeleteFilters", "void(* )( int , const unsigned int * )"),
AuxiliaryEffectSloti = get_proc_address("alAuxiliaryEffectSloti", "void(* )( unsigned int , int , int )"),
Sourcei = get_proc_address("alSourcei", "void(* )( unsigned int , int , int )"),
GetFilterf = get_proc_address("alGetFilterf", "void(* )( unsigned int , int , float * )"),
GenAuxiliaryEffectSlots = get_proc_address("alGenAuxiliaryEffectSlots", "void(* )( int , unsigned int * )"),
Sourcefv = get_proc_address("alSourcefv", "void(* )( unsigned int , int , const float * )"),
Source3f = get_proc_address("alSource3f", "void(* )( unsigned int , int , float , float , float )"),
GetBoolean = get_proc_address("alGetBoolean", "char(* )( int )"),
GetSourcefv = get_proc_address("alGetSourcefv", "void(* )( unsigned int , int , float * )"),
GetListeneriv = get_proc_address("alGetListeneriv", "void(* )( int , int * )"),
DopplerVelocity = get_proc_address("alDopplerVelocity", "void(* )( float )"),
Filterfv = get_proc_address("alFilterfv", "void(* )( unsigned int , int , const float * )"),
GetBooleanv = get_proc_address("alGetBooleanv", "void(* )( int , char * )"),
Bufferf = get_proc_address("alBufferf", "void(* )( unsigned int , int , float )"),
GetBufferfv = get_proc_address("alGetBufferfv", "void(* )( unsigned int , int , float * )"),
IsEnabled = get_proc_address("alIsEnabled", "char(* )( int )"),
Effecti = get_proc_address("alEffecti", "void(* )( unsigned int , int , int )"),
GetProcAddress = get_proc_address("alGetProcAddress", "void *(* )( const char * )"),
GetEffectiv = get_proc_address("alGetEffectiv", "void(* )( unsigned int , int , int * )"),
GetFilteriv = get_proc_address("alGetFilteriv", "void(* )( unsigned int , int , int * )"),
SourcePausev = get_proc_address("alSourcePausev", "void(* )( int , const unsigned int * )"),
Filteri = get_proc_address("alFilteri", "void(* )( unsigned int , int , int )"),
}
local AL_TRUE = 1
local AL_FALSE = 0
local AL_INVALID_ENUM = 40962
library.e = {
ALC_H = 1,
ALEXT_H = 1,
LOKI_IMA_ADPCM_format = 1,
FORMAT_IMA_ADPCM_MONO16_EXT = 65536,
FORMAT_IMA_ADPCM_STEREO16_EXT = 65537,
LOKI_WAVE_format = 1,
FORMAT_WAVE_EXT = 65538,
EXT_vorbis = 1,
FORMAT_VORBIS_EXT = 65539,
LOKI_quadriphonic = 1,
FORMAT_QUAD8_LOKI = 65540,
FORMAT_QUAD16_LOKI = 65541,
EXT_float32 = 1,
FORMAT_MONO_FLOAT32 = 65552,
FORMAT_STEREO_FLOAT32 = 65553,
EXT_double = 1,
FORMAT_MONO_DOUBLE_EXT = 65554,
FORMAT_STEREO_DOUBLE_EXT = 65555,
EXT_MULAW = 1,
FORMAT_MONO_MULAW_EXT = 65556,
FORMAT_STEREO_MULAW_EXT = 65557,
EXT_ALAW = 1,
FORMAT_MONO_ALAW_EXT = 65558,
FORMAT_STEREO_ALAW_EXT = 65559,
EXT_MCFORMATS = 1,
FORMAT_QUAD8 = 4612,
FORMAT_QUAD16 = 4613,
FORMAT_QUAD32 = 4614,
FORMAT_REAR8 = 4615,
FORMAT_REAR16 = 4616,
FORMAT_REAR32 = 4617,
FORMAT_51CHN8 = 4618,
FORMAT_51CHN16 = 4619,
FORMAT_51CHN32 = 4620,
FORMAT_61CHN8 = 4621,
FORMAT_61CHN16 = 4622,
FORMAT_61CHN32 = 4623,
FORMAT_71CHN8 = 4624,
FORMAT_71CHN16 = 4625,
FORMAT_71CHN32 = 4626,
EXT_MULAW_MCFORMATS = 1,
FORMAT_MONO_MULAW = 65556,
FORMAT_STEREO_MULAW = 65557,
FORMAT_QUAD_MULAW = 65569,
FORMAT_REAR_MULAW = 65570,
FORMAT_51CHN_MULAW = 65571,
FORMAT_61CHN_MULAW = 65572,
FORMAT_71CHN_MULAW = 65573,
EXT_IMA4 = 1,
FORMAT_MONO_IMA4 = 4864,
FORMAT_STEREO_IMA4 = 4865,
EXT_STATIC_BUFFER = 1,
EXT_source_distance_model = 1,
SOURCE_DISTANCE_MODEL = 512,
SOFT_buffer_sub_data = 1,
BYTE_RW_OFFSETS_SOFT = 4145,
SAMPLE_RW_OFFSETS_SOFT = 4146,
SOFT_loop_points = 1,
LOOP_POINTS_SOFT = 8213,
EXT_FOLDBACK = 1,
EXT_FOLDBACK_NAME = "1",
FOLDBACK_EVENT_BLOCK = 16658,
FOLDBACK_EVENT_START = 16657,
FOLDBACK_EVENT_STOP = 16659,
FOLDBACK_MODE_MONO = 16641,
FOLDBACK_MODE_STEREO = 16642,
DEDICATED_GAIN = 1,
EFFECT_DEDICATED_DIALOGUE = 36865,
EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT = 36864,
SOFT_buffer_samples = 1,
MONO_SOFT = 5376,
STEREO_SOFT = 5377,
REAR_SOFT = 5378,
QUAD_SOFT = 5379,
_5POINT1_SOFT = 5380,
_6POINT1_SOFT = 5381,
_7POINT1_SOFT = 5382,
BYTE_SOFT = 5120,
UNSIGNED_BYTE_SOFT = 5121,
SHORT_SOFT = 5122,
UNSIGNED_SHORT_SOFT = 5123,
INT_SOFT = 5124,
UNSIGNED_INT_SOFT = 5125,
FLOAT_SOFT = 5126,
DOUBLE_SOFT = 5127,
BYTE3_SOFT = 5128,
UNSIGNED_BYTE3_SOFT = 5129,
MONO8_SOFT = 4352,
MONO16_SOFT = 4353,
MONO32F_SOFT = 65552,
STEREO8_SOFT = 4354,
STEREO16_SOFT = 4355,
STEREO32F_SOFT = 65553,
QUAD8_SOFT = 4612,
QUAD16_SOFT = 4613,
QUAD32F_SOFT = 4614,
REAR8_SOFT = 4615,
REAR16_SOFT = 4616,
REAR32F_SOFT = 4617,
_5POINT1_8_SOFT = 4618,
_5POINT1_16_SOFT = 4619,
_5POINT1_32F_SOFT = 4620,
_6POINT1_8_SOFT = 4621,
_6POINT1_16_SOFT = 4622,
_6POINT1_32F_SOFT = 4623,
_7POINT1_8_SOFT = 4624,
_7POINT1_16_SOFT = 4625,
_7POINT1_32F_SOFT = 4626,
INTERNAL_FORMAT_SOFT = 8200,
BYTE_LENGTH_SOFT = 8201,
SAMPLE_LENGTH_SOFT = 8202,
SEC_LENGTH_SOFT = 8203,
SOFT_direct_channels = 1,
DIRECT_CHANNELS_SOFT = 4147,
EXT_STEREO_ANGLES = 1,
STEREO_ANGLES = 4144,
EXT_SOURCE_RADIUS = 1,
SOURCE_RADIUS = 4145,
SOFT_source_latency = 1,
SAMPLE_OFFSET_LATENCY_SOFT = 4608,
SEC_OFFSET_LATENCY_SOFT = 4609,
SOFT_deferred_updates = 1,
DEFERRED_UPDATES_SOFT = 49154,
SOFT_block_alignment = 1,
UNPACK_BLOCK_ALIGNMENT_SOFT = 8204,
PACK_BLOCK_ALIGNMENT_SOFT = 8205,
SOFT_MSADPCM = 1,
FORMAT_MONO_MSADPCM_SOFT = 4866,
FORMAT_STEREO_MSADPCM_SOFT = 4867,
SOFT_source_length = 1,
EXT_BFORMAT = 1,
FORMAT_BFORMAT2D_8 = 131105,
FORMAT_BFORMAT2D_16 = 131106,
FORMAT_BFORMAT2D_FLOAT32 = 131107,
FORMAT_BFORMAT3D_8 = 131121,
FORMAT_BFORMAT3D_16 = 131122,
FORMAT_BFORMAT3D_FLOAT32 = 131123,
EXT_MULAW_BFORMAT = 1,
FORMAT_BFORMAT2D_MULAW = 65585,
FORMAT_BFORMAT3D_MULAW = 65586,
SOFT_gain_clamp_ex = 1,
GAIN_LIMIT_SOFT = 8206,
SOFT_source_resampler = 1,
NUM_RESAMPLERS_SOFT = 4624,
DEFAULT_RESAMPLER_SOFT = 4625,
SOURCE_RESAMPLER_SOFT = 4626,
RESAMPLER_NAME_SOFT = 4627,
SOFT_source_spatialize = 1,
SOURCE_SPATIALIZE_SOFT = 4628,
AUTO_SOFT = 2,
AL_H = 1,
API = 1,
API = extern,
APIENTRY = __cdecl,
APIENTRY = 1,
INVALID = -1,
ILLEGAL_ENUM = AL_INVALID_ENUM,
ILLEGAL_COMMAND = AL_INVALID_OPERATION,
VERSION_1_0 = 1,
VERSION_1_1 = 1,
NONE = 0,
FALSE = 0,
TRUE = 1,
SOURCE_RELATIVE = 514,
CONE_INNER_ANGLE = 4097,
CONE_OUTER_ANGLE = 4098,
PITCH = 4099,
POSITION = 4100,
DIRECTION = 4101,
VELOCITY = 4102,
LOOPING = 4103,
BUFFER = 4105,
GAIN = 4106,
MIN_GAIN = 4109,
MAX_GAIN = 4110,
ORIENTATION = 4111,
SOURCE_STATE = 4112,
INITIAL = 4113,
PLAYING = 4114,
PAUSED = 4115,
STOPPED = 4116,
BUFFERS_QUEUED = 4117,
BUFFERS_PROCESSED = 4118,
REFERENCE_DISTANCE = 4128,
ROLLOFF_FACTOR = 4129,
CONE_OUTER_GAIN = 4130,
MAX_DISTANCE = 4131,
SEC_OFFSET = 4132,
SAMPLE_OFFSET = 4133,
BYTE_OFFSET = 4134,
SOURCE_TYPE = 4135,
STATIC = 4136,
STREAMING = 4137,
UNDETERMINED = 4144,
FORMAT_MONO8 = 4352,
FORMAT_MONO16 = 4353,
FORMAT_STEREO8 = 4354,
FORMAT_STEREO16 = 4355,
FREQUENCY = 8193,
BITS = 8194,
CHANNELS = 8195,
SIZE = 8196,
UNUSED = 8208,
PENDING = 8209,
PROCESSED = 8210,
NO_ERROR = 0,
INVALID_NAME = 40961,
INVALID_ENUM = 40962,
INVALID_VALUE = 40963,
INVALID_OPERATION = 40964,
OUT_OF_MEMORY = 40965,
VENDOR = 45057,
VERSION = 45058,
RENDERER = 45059,
EXTENSIONS = 45060,
DOPPLER_FACTOR = 49152,
DOPPLER_VELOCITY = 49153,
SPEED_OF_SOUND = 49155,
DISTANCE_MODEL = 53248,
INVERSE_DISTANCE = 53249,
INVERSE_DISTANCE_CLAMPED = 53250,
LINEAR_DISTANCE = 53251,
LINEAR_DISTANCE_CLAMPED = 53252,
EXPONENT_DISTANCE = 53253,
EXPONENT_DISTANCE_CLAMPED = 53254,
EFX_H = 1,
METERS_PER_UNIT = 131076,
DIRECT_FILTER = 131077,
AUXILIARY_SEND_FILTER = 131078,
AIR_ABSORPTION_FACTOR = 131079,
ROOM_ROLLOFF_FACTOR = 131080,
CONE_OUTER_GAINHF = 131081,
DIRECT_FILTER_GAINHF_AUTO = 131082,
AUXILIARY_SEND_FILTER_GAIN_AUTO = 131083,
AUXILIARY_SEND_FILTER_GAINHF_AUTO = 131084,
REVERB_DENSITY = 1,
REVERB_DIFFUSION = 2,
REVERB_GAIN = 3,
REVERB_GAINHF = 4,
REVERB_DECAY_TIME = 5,
REVERB_DECAY_HFRATIO = 6,
REVERB_REFLECTIONS_GAIN = 7,
REVERB_REFLECTIONS_DELAY = 8,
REVERB_LATE_REVERB_GAIN = 9,
REVERB_LATE_REVERB_DELAY = 10,
REVERB_AIR_ABSORPTION_GAINHF = 11,
REVERB_ROOM_ROLLOFF_FACTOR = 12,
REVERB_DECAY_HFLIMIT = 13,
EAXREVERB_DENSITY = 1,
EAXREVERB_DIFFUSION = 2,
EAXREVERB_GAIN = 3,
EAXREVERB_GAINHF = 4,
EAXREVERB_GAINLF = 5,
EAXREVERB_DECAY_TIME = 6,
EAXREVERB_DECAY_HFRATIO = 7,
EAXREVERB_DECAY_LFRATIO = 8,
EAXREVERB_REFLECTIONS_GAIN = 9,
EAXREVERB_REFLECTIONS_DELAY = 10,
EAXREVERB_REFLECTIONS_PAN = 11,
EAXREVERB_LATE_REVERB_GAIN = 12,
EAXREVERB_LATE_REVERB_DELAY = 13,
EAXREVERB_LATE_REVERB_PAN = 14,
EAXREVERB_ECHO_TIME = 15,
EAXREVERB_ECHO_DEPTH = 16,
EAXREVERB_MODULATION_TIME = 17,
EAXREVERB_MODULATION_DEPTH = 18,
EAXREVERB_AIR_ABSORPTION_GAINHF = 19,
EAXREVERB_HFREFERENCE = 20,
EAXREVERB_LFREFERENCE = 21,
EAXREVERB_ROOM_ROLLOFF_FACTOR = 22,
EAXREVERB_DECAY_HFLIMIT = 23,
CHORUS_WAVEFORM = 1,
CHORUS_PHASE = 2,
CHORUS_RATE = 3,
CHORUS_DEPTH = 4,
CHORUS_FEEDBACK = 5,
CHORUS_DELAY = 6,
DISTORTION_EDGE = 1,
DISTORTION_GAIN = 2,
DISTORTION_LOWPASS_CUTOFF = 3,
DISTORTION_EQCENTER = 4,
DISTORTION_EQBANDWIDTH = 5,
ECHO_DELAY = 1,
ECHO_LRDELAY = 2,
ECHO_DAMPING = 3,
ECHO_FEEDBACK = 4,
ECHO_SPREAD = 5,
FLANGER_WAVEFORM = 1,
FLANGER_PHASE = 2,
FLANGER_RATE = 3,
FLANGER_DEPTH = 4,
FLANGER_FEEDBACK = 5,
FLANGER_DELAY = 6,
FREQUENCY_SHIFTER_FREQUENCY = 1,
FREQUENCY_SHIFTER_LEFT_DIRECTION = 2,
FREQUENCY_SHIFTER_RIGHT_DIRECTION = 3,
VOCAL_MORPHER_PHONEMEA = 1,
VOCAL_MORPHER_PHONEMEA_COARSE_TUNING = 2,
VOCAL_MORPHER_PHONEMEB = 3,
VOCAL_MORPHER_PHONEMEB_COARSE_TUNING = 4,
VOCAL_MORPHER_WAVEFORM = 5,
VOCAL_MORPHER_RATE = 6,
PITCH_SHIFTER_COARSE_TUNE = 1,
PITCH_SHIFTER_FINE_TUNE = 2,
RING_MODULATOR_FREQUENCY = 1,
RING_MODULATOR_HIGHPASS_CUTOFF = 2,
RING_MODULATOR_WAVEFORM = 3,
AUTOWAH_ATTACK_TIME = 1,
AUTOWAH_RELEASE_TIME = 2,
AUTOWAH_RESONANCE = 3,
AUTOWAH_PEAK_GAIN = 4,
COMPRESSOR_ONOFF = 1,
EQUALIZER_LOW_GAIN = 1,
EQUALIZER_LOW_CUTOFF = 2,
EQUALIZER_MID1_GAIN = 3,
EQUALIZER_MID1_CENTER = 4,
EQUALIZER_MID1_WIDTH = 5,
EQUALIZER_MID2_GAIN = 6,
EQUALIZER_MID2_CENTER = 7,
EQUALIZER_MID2_WIDTH = 8,
EQUALIZER_HIGH_GAIN = 9,
EQUALIZER_HIGH_CUTOFF = 10,
EFFECT_FIRST_PARAMETER = 0,
EFFECT_LAST_PARAMETER = 32768,
EFFECT_TYPE = 32769,
EFFECT_NULL = 0,
EFFECT_REVERB = 1,
EFFECT_CHORUS = 2,
EFFECT_DISTORTION = 3,
EFFECT_ECHO = 4,
EFFECT_FLANGER = 5,
EFFECT_FREQUENCY_SHIFTER = 6,
EFFECT_VOCAL_MORPHER = 7,
EFFECT_PITCH_SHIFTER = 8,
EFFECT_RING_MODULATOR = 9,
EFFECT_AUTOWAH = 10,
EFFECT_COMPRESSOR = 11,
EFFECT_EQUALIZER = 12,
EFFECT_EAXREVERB = 32768,
EFFECTSLOT_EFFECT = 1,
EFFECTSLOT_GAIN = 2,
EFFECTSLOT_AUXILIARY_SEND_AUTO = 3,
EFFECTSLOT_NULL = 0,
LOWPASS_GAIN = 1,
LOWPASS_GAINHF = 2,
HIGHPASS_GAIN = 1,
HIGHPASS_GAINLF = 2,
BANDPASS_GAIN = 1,
BANDPASS_GAINLF = 2,
BANDPASS_GAINHF = 3,
FILTER_FIRST_PARAMETER = 0,
FILTER_LAST_PARAMETER = 32768,
FILTER_TYPE = 32769,
FILTER_NULL = 0,
FILTER_LOWPASS = 1,
FILTER_HIGHPASS = 2,
FILTER_BANDPASS = 3,
LOWPASS_MIN_GAIN = 0,
LOWPASS_MAX_GAIN = 1,
LOWPASS_DEFAULT_GAIN = 1,
LOWPASS_MIN_GAINHF = 0,
LOWPASS_MAX_GAINHF = 1,
LOWPASS_DEFAULT_GAINHF = 1,
HIGHPASS_MIN_GAIN = 0,
HIGHPASS_MAX_GAIN = 1,
HIGHPASS_DEFAULT_GAIN = 1,
HIGHPASS_MIN_GAINLF = 0,
HIGHPASS_MAX_GAINLF = 1,
HIGHPASS_DEFAULT_GAINLF = 1,
BANDPASS_MIN_GAIN = 0,
BANDPASS_MAX_GAIN = 1,
BANDPASS_DEFAULT_GAIN = 1,
BANDPASS_MIN_GAINHF = 0,
BANDPASS_MAX_GAINHF = 1,
BANDPASS_DEFAULT_GAINHF = 1,
BANDPASS_MIN_GAINLF = 0,
BANDPASS_MAX_GAINLF = 1,
BANDPASS_DEFAULT_GAINLF = 1,
REVERB_MIN_DENSITY = 0,
REVERB_MAX_DENSITY = 1,
REVERB_DEFAULT_DENSITY = 1,
REVERB_MIN_DIFFUSION = 0,
REVERB_MAX_DIFFUSION = 1,
REVERB_DEFAULT_DIFFUSION = 1,
REVERB_MIN_GAIN = 0,
REVERB_MAX_GAIN = 1,
REVERB_DEFAULT_GAIN = 0.32,
REVERB_MIN_GAINHF = 0,
REVERB_MAX_GAINHF = 1,
REVERB_DEFAULT_GAINHF = 0.89,
REVERB_MIN_DECAY_TIME = 0.1,
REVERB_MAX_DECAY_TIME = 20,
REVERB_DEFAULT_DECAY_TIME = 1.49,
REVERB_MIN_DECAY_HFRATIO = 0.1,
REVERB_MAX_DECAY_HFRATIO = 2,
REVERB_DEFAULT_DECAY_HFRATIO = 0.83,
REVERB_MIN_REFLECTIONS_GAIN = 0,
REVERB_MAX_REFLECTIONS_GAIN = 3.16,
REVERB_DEFAULT_REFLECTIONS_GAIN = 0.05,
REVERB_MIN_REFLECTIONS_DELAY = 0,
REVERB_MAX_REFLECTIONS_DELAY = 0.3,
REVERB_DEFAULT_REFLECTIONS_DELAY = 0.007,
REVERB_MIN_LATE_REVERB_GAIN = 0,
REVERB_MAX_LATE_REVERB_GAIN = 10,
REVERB_DEFAULT_LATE_REVERB_GAIN = 1.26,
REVERB_MIN_LATE_REVERB_DELAY = 0,
REVERB_MAX_LATE_REVERB_DELAY = 0.1,
REVERB_DEFAULT_LATE_REVERB_DELAY = 0.011,
REVERB_MIN_AIR_ABSORPTION_GAINHF = 0.892,
REVERB_MAX_AIR_ABSORPTION_GAINHF = 1,
REVERB_DEFAULT_AIR_ABSORPTION_GAINHF = 0.994,
REVERB_MIN_ROOM_ROLLOFF_FACTOR = 0,
REVERB_MAX_ROOM_ROLLOFF_FACTOR = 10,
REVERB_DEFAULT_ROOM_ROLLOFF_FACTOR = 0,
REVERB_MIN_DECAY_HFLIMIT = AL_FALSE,
REVERB_MAX_DECAY_HFLIMIT = AL_TRUE,
REVERB_DEFAULT_DECAY_HFLIMIT = AL_TRUE,
EAXREVERB_MIN_DENSITY = 0,
EAXREVERB_MAX_DENSITY = 1,
EAXREVERB_DEFAULT_DENSITY = 1,
EAXREVERB_MIN_DIFFUSION = 0,
EAXREVERB_MAX_DIFFUSION = 1,
EAXREVERB_DEFAULT_DIFFUSION = 1,
EAXREVERB_MIN_GAIN = 0,
EAXREVERB_MAX_GAIN = 1,
EAXREVERB_DEFAULT_GAIN = 0.32,
EAXREVERB_MIN_GAINHF = 0,
EAXREVERB_MAX_GAINHF = 1,
EAXREVERB_DEFAULT_GAINHF = 0.89,
EAXREVERB_MIN_GAINLF = 0,
EAXREVERB_MAX_GAINLF = 1,
EAXREVERB_DEFAULT_GAINLF = 1,
EAXREVERB_MIN_DECAY_TIME = 0.1,
EAXREVERB_MAX_DECAY_TIME = 20,
EAXREVERB_DEFAULT_DECAY_TIME = 1.49,
EAXREVERB_MIN_DECAY_HFRATIO = 0.1,
EAXREVERB_MAX_DECAY_HFRATIO = 2,
EAXREVERB_DEFAULT_DECAY_HFRATIO = 0.83,
EAXREVERB_MIN_DECAY_LFRATIO = 0.1,
EAXREVERB_MAX_DECAY_LFRATIO = 2,
EAXREVERB_DEFAULT_DECAY_LFRATIO = 1,
EAXREVERB_MIN_REFLECTIONS_GAIN = 0,
EAXREVERB_MAX_REFLECTIONS_GAIN = 3.16,
EAXREVERB_DEFAULT_REFLECTIONS_GAIN = 0.05,
EAXREVERB_MIN_REFLECTIONS_DELAY = 0,
EAXREVERB_MAX_REFLECTIONS_DELAY = 0.3,
EAXREVERB_DEFAULT_REFLECTIONS_DELAY = 0.007,
EAXREVERB_DEFAULT_REFLECTIONS_PAN_XYZ = 0,
EAXREVERB_MIN_LATE_REVERB_GAIN = 0,
EAXREVERB_MAX_LATE_REVERB_GAIN = 10,
EAXREVERB_DEFAULT_LATE_REVERB_GAIN = 1.26,
EAXREVERB_MIN_LATE_REVERB_DELAY = 0,
EAXREVERB_MAX_LATE_REVERB_DELAY = 0.1,
EAXREVERB_DEFAULT_LATE_REVERB_DELAY = 0.011,
EAXREVERB_DEFAULT_LATE_REVERB_PAN_XYZ = 0,
EAXREVERB_MIN_ECHO_TIME = 0.075,
EAXREVERB_MAX_ECHO_TIME = 0.25,
EAXREVERB_DEFAULT_ECHO_TIME = 0.25,
EAXREVERB_MIN_ECHO_DEPTH = 0,
EAXREVERB_MAX_ECHO_DEPTH = 1,
EAXREVERB_DEFAULT_ECHO_DEPTH = 0,
EAXREVERB_MIN_MODULATION_TIME = 0.04,
EAXREVERB_MAX_MODULATION_TIME = 4,
EAXREVERB_DEFAULT_MODULATION_TIME = 0.25,
EAXREVERB_MIN_MODULATION_DEPTH = 0,
EAXREVERB_MAX_MODULATION_DEPTH = 1,
EAXREVERB_DEFAULT_MODULATION_DEPTH = 0,
EAXREVERB_MIN_AIR_ABSORPTION_GAINHF = 0.892,
EAXREVERB_MAX_AIR_ABSORPTION_GAINHF = 1,
EAXREVERB_DEFAULT_AIR_ABSORPTION_GAINHF = 0.994,
EAXREVERB_MIN_HFREFERENCE = 1000,
EAXREVERB_MAX_HFREFERENCE = 20000,
EAXREVERB_DEFAULT_HFREFERENCE = 5000,
EAXREVERB_MIN_LFREFERENCE = 20,
EAXREVERB_MAX_LFREFERENCE = 1000,
EAXREVERB_DEFAULT_LFREFERENCE = 250,
EAXREVERB_MIN_ROOM_ROLLOFF_FACTOR = 0,
EAXREVERB_MAX_ROOM_ROLLOFF_FACTOR = 10,
EAXREVERB_DEFAULT_ROOM_ROLLOFF_FACTOR = 0,
EAXREVERB_MIN_DECAY_HFLIMIT = AL_FALSE,
EAXREVERB_MAX_DECAY_HFLIMIT = AL_TRUE,
EAXREVERB_DEFAULT_DECAY_HFLIMIT = AL_TRUE,
CHORUS_WAVEFORM_SINUSOID = 0,
CHORUS_WAVEFORM_TRIANGLE = 1,
CHORUS_MIN_WAVEFORM = 0,
CHORUS_MAX_WAVEFORM = 1,
CHORUS_DEFAULT_WAVEFORM = 1,
CHORUS_MIN_PHASE = -180,
CHORUS_MAX_PHASE = 180,
CHORUS_DEFAULT_PHASE = 90,
CHORUS_MIN_RATE = 0,
CHORUS_MAX_RATE = 10,
CHORUS_DEFAULT_RATE = 1.1,
CHORUS_MIN_DEPTH = 0,
CHORUS_MAX_DEPTH = 1,
CHORUS_DEFAULT_DEPTH = 0.1,
CHORUS_MIN_FEEDBACK = -1,
CHORUS_MAX_FEEDBACK = 1,
CHORUS_DEFAULT_FEEDBACK = 0.25,
CHORUS_MIN_DELAY = 0,
CHORUS_MAX_DELAY = 0.016,
CHORUS_DEFAULT_DELAY = 0.016,
DISTORTION_MIN_EDGE = 0,
DISTORTION_MAX_EDGE = 1,
DISTORTION_DEFAULT_EDGE = 0.2,
DISTORTION_MIN_GAIN = 0.01,
DISTORTION_MAX_GAIN = 1,
DISTORTION_DEFAULT_GAIN = 0.05,
DISTORTION_MIN_LOWPASS_CUTOFF = 80,
DISTORTION_MAX_LOWPASS_CUTOFF = 24000,
DISTORTION_DEFAULT_LOWPASS_CUTOFF = 8000,
DISTORTION_MIN_EQCENTER = 80,
DISTORTION_MAX_EQCENTER = 24000,
DISTORTION_DEFAULT_EQCENTER = 3600,
DISTORTION_MIN_EQBANDWIDTH = 80,
DISTORTION_MAX_EQBANDWIDTH = 24000,
DISTORTION_DEFAULT_EQBANDWIDTH = 3600,
ECHO_MIN_DELAY = 0,
ECHO_MAX_DELAY = 0.207,
ECHO_DEFAULT_DELAY = 0.1,
ECHO_MIN_LRDELAY = 0,
ECHO_MAX_LRDELAY = 0.404,
ECHO_DEFAULT_LRDELAY = 0.1,
ECHO_MIN_DAMPING = 0,
ECHO_MAX_DAMPING = 0.99,
ECHO_DEFAULT_DAMPING = 0.5,
ECHO_MIN_FEEDBACK = 0,
ECHO_MAX_FEEDBACK = 1,
ECHO_DEFAULT_FEEDBACK = 0.5,
ECHO_MIN_SPREAD = -1,
ECHO_MAX_SPREAD = 1,
ECHO_DEFAULT_SPREAD = -1,
FLANGER_WAVEFORM_SINUSOID = 0,
FLANGER_WAVEFORM_TRIANGLE = 1,
FLANGER_MIN_WAVEFORM = 0,
FLANGER_MAX_WAVEFORM = 1,
FLANGER_DEFAULT_WAVEFORM = 1,
FLANGER_MIN_PHASE = -180,
FLANGER_MAX_PHASE = 180,
FLANGER_DEFAULT_PHASE = 0,
FLANGER_MIN_RATE = 0,
FLANGER_MAX_RATE = 10,
FLANGER_DEFAULT_RATE = 0.27,
FLANGER_MIN_DEPTH = 0,
FLANGER_MAX_DEPTH = 1,
FLANGER_DEFAULT_DEPTH = 1,
FLANGER_MIN_FEEDBACK = -1,
FLANGER_MAX_FEEDBACK = 1,
FLANGER_DEFAULT_FEEDBACK = -0.5,
FLANGER_MIN_DELAY = 0,
FLANGER_MAX_DELAY = 0.004,
FLANGER_DEFAULT_DELAY = 0.002,
FREQUENCY_SHIFTER_MIN_FREQUENCY = 0,
FREQUENCY_SHIFTER_MAX_FREQUENCY = 24000,
FREQUENCY_SHIFTER_DEFAULT_FREQUENCY = 0,
FREQUENCY_SHIFTER_MIN_LEFT_DIRECTION = 0,
FREQUENCY_SHIFTER_MAX_LEFT_DIRECTION = 2,
FREQUENCY_SHIFTER_DEFAULT_LEFT_DIRECTION = 0,
FREQUENCY_SHIFTER_DIRECTION_DOWN = 0,
FREQUENCY_SHIFTER_DIRECTION_UP = 1,
FREQUENCY_SHIFTER_DIRECTION_OFF = 2,
FREQUENCY_SHIFTER_MIN_RIGHT_DIRECTION = 0,
FREQUENCY_SHIFTER_MAX_RIGHT_DIRECTION = 2,
FREQUENCY_SHIFTER_DEFAULT_RIGHT_DIRECTION = 0,
VOCAL_MORPHER_MIN_PHONEMEA = 0,
VOCAL_MORPHER_MAX_PHONEMEA = 29,
VOCAL_MORPHER_DEFAULT_PHONEMEA = 0,
VOCAL_MORPHER_MIN_PHONEMEA_COARSE_TUNING = -24,
VOCAL_MORPHER_MAX_PHONEMEA_COARSE_TUNING = 24,
VOCAL_MORPHER_DEFAULT_PHONEMEA_COARSE_TUNING = 0,
VOCAL_MORPHER_MIN_PHONEMEB = 0,
VOCAL_MORPHER_MAX_PHONEMEB = 29,
VOCAL_MORPHER_DEFAULT_PHONEMEB = 10,
VOCAL_MORPHER_MIN_PHONEMEB_COARSE_TUNING = -24,
VOCAL_MORPHER_MAX_PHONEMEB_COARSE_TUNING = 24,
VOCAL_MORPHER_DEFAULT_PHONEMEB_COARSE_TUNING = 0,
VOCAL_MORPHER_PHONEME_A = 0,
VOCAL_MORPHER_PHONEME_E = 1,
VOCAL_MORPHER_PHONEME_I = 2,
VOCAL_MORPHER_PHONEME_O = 3,
VOCAL_MORPHER_PHONEME_U = 4,
VOCAL_MORPHER_PHONEME_AA = 5,
VOCAL_MORPHER_PHONEME_AE = 6,
VOCAL_MORPHER_PHONEME_AH = 7,
VOCAL_MORPHER_PHONEME_AO = 8,
VOCAL_MORPHER_PHONEME_EH = 9,
VOCAL_MORPHER_PHONEME_ER = 10,
VOCAL_MORPHER_PHONEME_IH = 11,
VOCAL_MORPHER_PHONEME_IY = 12,
VOCAL_MORPHER_PHONEME_UH = 13,
VOCAL_MORPHER_PHONEME_UW = 14,
VOCAL_MORPHER_PHONEME_B = 15,
VOCAL_MORPHER_PHONEME_D = 16,
VOCAL_MORPHER_PHONEME_F = 17,
VOCAL_MORPHER_PHONEME_G = 18,
VOCAL_MORPHER_PHONEME_J = 19,
VOCAL_MORPHER_PHONEME_K = 20,
VOCAL_MORPHER_PHONEME_L = 21,
VOCAL_MORPHER_PHONEME_M = 22,
VOCAL_MORPHER_PHONEME_N = 23,
VOCAL_MORPHER_PHONEME_P = 24,
VOCAL_MORPHER_PHONEME_R = 25,
VOCAL_MORPHER_PHONEME_S = 26,
VOCAL_MORPHER_PHONEME_T = 27,
VOCAL_MORPHER_PHONEME_V = 28,
VOCAL_MORPHER_PHONEME_Z = 29,
VOCAL_MORPHER_WAVEFORM_SINUSOID = 0,
VOCAL_MORPHER_WAVEFORM_TRIANGLE = 1,
VOCAL_MORPHER_WAVEFORM_SAWTOOTH = 2,
VOCAL_MORPHER_MIN_WAVEFORM = 0,
VOCAL_MORPHER_MAX_WAVEFORM = 2,
VOCAL_MORPHER_DEFAULT_WAVEFORM = 0,
VOCAL_MORPHER_MIN_RATE = 0,
VOCAL_MORPHER_MAX_RATE = 10,
VOCAL_MORPHER_DEFAULT_RATE = 1.41,
PITCH_SHIFTER_MIN_COARSE_TUNE = -12,
PITCH_SHIFTER_MAX_COARSE_TUNE = 12,
PITCH_SHIFTER_DEFAULT_COARSE_TUNE = 12,
PITCH_SHIFTER_MIN_FINE_TUNE = -50,
PITCH_SHIFTER_MAX_FINE_TUNE = 50,
PITCH_SHIFTER_DEFAULT_FINE_TUNE = 0,
RING_MODULATOR_MIN_FREQUENCY = 0,
RING_MODULATOR_MAX_FREQUENCY = 8000,
RING_MODULATOR_DEFAULT_FREQUENCY = 440,
RING_MODULATOR_MIN_HIGHPASS_CUTOFF = 0,
RING_MODULATOR_MAX_HIGHPASS_CUTOFF = 24000,
RING_MODULATOR_DEFAULT_HIGHPASS_CUTOFF = 800,
RING_MODULATOR_SINUSOID = 0,
RING_MODULATOR_SAWTOOTH = 1,
RING_MODULATOR_SQUARE = 2,
RING_MODULATOR_MIN_WAVEFORM = 0,
RING_MODULATOR_MAX_WAVEFORM = 2,
RING_MODULATOR_DEFAULT_WAVEFORM = 0,
AUTOWAH_MIN_ATTACK_TIME = 0.0001,
AUTOWAH_MAX_ATTACK_TIME = 1,
AUTOWAH_DEFAULT_ATTACK_TIME = 0.06,
AUTOWAH_MIN_RELEASE_TIME = 0.0001,
AUTOWAH_MAX_RELEASE_TIME = 1,
AUTOWAH_DEFAULT_RELEASE_TIME = 0.06,
AUTOWAH_MIN_RESONANCE = 2,
AUTOWAH_MAX_RESONANCE = 1000,
AUTOWAH_DEFAULT_RESONANCE = 1000,
AUTOWAH_MIN_PEAK_GAIN = 3e-05,
AUTOWAH_MAX_PEAK_GAIN = 31621,
AUTOWAH_DEFAULT_PEAK_GAIN = 11.22,
COMPRESSOR_MIN_ONOFF = 0,
COMPRESSOR_MAX_ONOFF = 1,
COMPRESSOR_DEFAULT_ONOFF = 1,
EQUALIZER_MIN_LOW_GAIN = 0.126,
EQUALIZER_MAX_LOW_GAIN = 7.943,
EQUALIZER_DEFAULT_LOW_GAIN = 1,
EQUALIZER_MIN_LOW_CUTOFF = 50,
EQUALIZER_MAX_LOW_CUTOFF = 800,
EQUALIZER_DEFAULT_LOW_CUTOFF = 200,
EQUALIZER_MIN_MID1_GAIN = 0.126,
EQUALIZER_MAX_MID1_GAIN = 7.943,
EQUALIZER_DEFAULT_MID1_GAIN = 1,
EQUALIZER_MIN_MID1_CENTER = 200,
EQUALIZER_MAX_MID1_CENTER = 3000,
EQUALIZER_DEFAULT_MID1_CENTER = 500,
EQUALIZER_MIN_MID1_WIDTH = 0.01,
EQUALIZER_MAX_MID1_WIDTH = 1,
EQUALIZER_DEFAULT_MID1_WIDTH = 1,
EQUALIZER_MIN_MID2_GAIN = 0.126,
EQUALIZER_MAX_MID2_GAIN = 7.943,
EQUALIZER_DEFAULT_MID2_GAIN = 1,
EQUALIZER_MIN_MID2_CENTER = 1000,
EQUALIZER_MAX_MID2_CENTER = 8000,
EQUALIZER_DEFAULT_MID2_CENTER = 3000,
EQUALIZER_MIN_MID2_WIDTH = 0.01,
EQUALIZER_MAX_MID2_WIDTH = 1,
EQUALIZER_DEFAULT_MID2_WIDTH = 1,
EQUALIZER_MIN_HIGH_GAIN = 0.126,
EQUALIZER_MAX_HIGH_GAIN = 7.943,
EQUALIZER_DEFAULT_HIGH_GAIN = 1,
EQUALIZER_MIN_HIGH_CUTOFF = 4000,
EQUALIZER_MAX_HIGH_CUTOFF = 16000,
EQUALIZER_DEFAULT_HIGH_CUTOFF = 6000,
MIN_AIR_ABSORPTION_FACTOR = 0,
MAX_AIR_ABSORPTION_FACTOR = 10,
DEFAULT_AIR_ABSORPTION_FACTOR = 0,
MIN_ROOM_ROLLOFF_FACTOR = 0,
MAX_ROOM_ROLLOFF_FACTOR = 10,
DEFAULT_ROOM_ROLLOFF_FACTOR = 0,
MIN_CONE_OUTER_GAINHF = 0,
MAX_CONE_OUTER_GAINHF = 1,
DEFAULT_CONE_OUTER_GAINHF = 1,
MIN_DIRECT_FILTER_GAINHF_AUTO = AL_FALSE,
MAX_DIRECT_FILTER_GAINHF_AUTO = AL_TRUE,
DEFAULT_DIRECT_FILTER_GAINHF_AUTO = AL_TRUE,
MIN_AUXILIARY_SEND_FILTER_GAIN_AUTO = AL_FALSE,
MAX_AUXILIARY_SEND_FILTER_GAIN_AUTO = AL_TRUE,
DEFAULT_AUXILIARY_SEND_FILTER_GAIN_AUTO = AL_TRUE,
MIN_AUXILIARY_SEND_FILTER_GAINHF_AUTO = AL_FALSE,
MAX_AUXILIARY_SEND_FILTER_GAINHF_AUTO = AL_TRUE,
DEFAULT_AUXILIARY_SEND_FILTER_GAINHF_AUTO = AL_TRUE,
MIN_METERS_PER_UNIT = FLT_MIN,
MAX_METERS_PER_UNIT = FLT_MAX,
DEFAULT_METERS_PER_UNIT = 1,
}
library.EffectParams = {
compressor = {
enum = 11,
params = {
onoff = {
max = 1,
enum = 1,
min = 0,
default = 1,
},
},
},
dedicated_dialogue = {
enum = 36865,
params = {
},
},
reverb = {
enum = 1,
params = {
modulation_depth = {
max = 1,
enum = 18,
min = 0,
default = 0,
},
late_reverb_pan = {
enum = 14,
},
reflections_gain = {
max = 3.16,
enum = 9,
min = 0,
default = 0.05,
},
gainlf = {
max = 1,
enum = 5,
min = 0,
default = 1,
},
gainhf = {
max = 1,
enum = 4,
min = 0,
default = 0.89,
},
density = {
max = 1,
enum = 1,
min = 0,
default = 1,
},
reflections_pan_xyz = {
default = 0,
},
room_rolloff_factor = {
max = 10,
enum = 22,
min = 0,
default = 0,
},
echo_depth = {
max = 1,
enum = 16,
min = 0,
default = 0,
},
gain = {
max = 1,
enum = 3,
min = 0,
default = 0.32,
},
air_absorption_gainhf = {
max = 1,
enum = 11,
min = 0.892,
default = 0.994,
},
decay_lfratio = {
max = 2,
enum = 8,
min = 0.1,
default = 1,
},
modulation_time = {
max = 4,
enum = 17,
min = 0.04,
default = 0.25,
},
lfreference = {
max = 1000,
enum = 21,
min = 20,
default = 250,
},
hfreference = {
max = 20000,
enum = 20,
min = 1000,
default = 5000,
},
echo_time = {
max = 0.25,
enum = 15,
min = 0.075,
default = 0.25,
},
reflections_delay = {
max = 0.3,
enum = 8,
min = 0,
default = 0.007,
},
late_reverb_pan_xyz = {
default = 0,
},
decay_time = {
max = 20,
enum = 6,
min = 0.1,
default = 1.49,
},
decay_hflimit = {
enum = 23,
},
reflections_pan = {
enum = 11,
},
late_reverb_delay = {
max = 0.1,
enum = 13,
min = 0,
default = 0.011,
},
late_reverb_gain = {
max = 10,
enum = 12,
min = 0,
default = 1.26,
},
diffusion = {
max = 1,
enum = 2,
min = 0,
default = 1,
},
decay_hfratio = {
max = 2,
enum = 6,
min = 0.1,
default = 0.83,
},
},
},
eaxreverb = {
enum = 32768,
params = {
modulation_depth = {
max = 1,
enum = 18,
min = 0,
default = 0,
},
late_reverb_pan = {
enum = 14,
},
reflections_gain = {
max = 3.16,
enum = 9,
min = 0,
default = 0.05,
},
gainlf = {
max = 1,
enum = 5,
min = 0,
default = 1,
},
gainhf = {
max = 1,
enum = 4,
min = 0,
default = 0.89,
},
density = {
max = 1,
enum = 1,
min = 0,
default = 1,
},
reflections_pan_xyz = {
default = 0,
},
room_rolloff_factor = {
max = 10,
enum = 22,
min = 0,
default = 0,
},
late_reverb_pan_xyz = {
default = 0,
},
late_reverb_delay = {
max = 0.1,
enum = 13,
min = 0,
default = 0.011,
},
air_absorption_gainhf = {
max = 1,
enum = 19,
min = 0.892,
default = 0.994,
},
decay_time = {
max = 20,
enum = 6,
min = 0.1,
default = 1.49,
},
reflections_delay = {
max = 0.3,
enum = 10,
min = 0,
default = 0.007,
},
lfreference = {
max = 1000,
enum = 21,
min = 20,
default = 250,
},
reflections_pan = {
enum = 11,
},
echo_time = {
max = 0.25,
enum = 15,
min = 0.075,
default = 0.25,
},
hfreference = {
max = 20000,
enum = 20,
min = 1000,
default = 5000,
},
decay_lfratio = {
max = 2,
enum = 8,
min = 0.1,
default = 1,
},
modulation_time = {
max = 4,
enum = 17,
min = 0.04,
default = 0.25,
},
decay_hflimit = {
enum = 23,
},
gain = {
max = 1,
enum = 3,
min = 0,
default = 0.32,
},
echo_depth = {
max = 1,
enum = 16,
min = 0,
default = 0,
},
late_reverb_gain = {
max = 10,
enum = 12,
min = 0,
default = 1.26,
},
diffusion = {
max = 1,
enum = 2,
min = 0,
default = 1,
},
decay_hfratio = {
max = 2,
enum = 7,
min = 0.1,
default = 0.83,
},
},
},
dedicated_low_frequency_effect = {
enum = 36864,
params = {
},
},
equalizer = {
enum = 12,
params = {
mid1_center = {
max = 3000,
enum = 4,
min = 200,
default = 500,
},
mid1_width = {
max = 1,
enum = 5,
min = 0.01,
default = 1,
},
mid2_center = {
max = 8000,
enum = 7,
min = 1000,
default = 3000,
},
mid2_gain = {
max = 7.943,
enum = 6,
min = 0.126,
default = 1,
},
mid2_width = {
max = 1,
enum = 8,
min = 0.01,
default = 1,
},
low_gain = {
max = 7.943,
enum = 1,
min = 0.126,
default = 1,
},
high_cutoff = {
max = 16000,
enum = 10,
min = 4000,
default = 6000,
},
mid1_gain = {
max = 7.943,
enum = 3,
min = 0.126,
default = 1,
},
low_cutoff = {
max = 800,
enum = 2,
min = 50,
default = 200,
},
high_gain = {
max = 7.943,
enum = 9,
min = 0.126,
default = 1,
},
},
},
distortion = {
enum = 3,
params = {
eqcenter = {
max = 24000,
enum = 4,
min = 80,
default = 3600,
},
edge = {
max = 1,
enum = 1,
min = 0,
default = 0.2,
},
lowpass_cutoff = {
max = 24000,
enum = 3,
min = 80,
default = 8000,
},
gain = {
max = 1,
enum = 2,
min = 0.01,
default = 0.05,
},
eqbandwidth = {
max = 24000,
enum = 5,
min = 80,
default = 3600,
},
},
},
flanger = {
enum = 5,
params = {
waveform_sinusoid = {
enum = 0,
},
phase = {
max = 180,
enum = 2,
min = -180,
default = 0,
},
waveform = {
max = 1,
enum = 1,
min = 0,
default = 1,
},
rate = {
max = 10,
enum = 3,
min = 0,
default = 0.27,
},
delay = {
max = 0.004,
enum = 6,
min = 0,
default = 0.002,
},
depth = {
max = 1,
enum = 4,
min = 0,
default = 1,
},
feedback = {
max = 1,
enum = 5,
min = -1,
default = -0.5,
},
waveform_triangle = {
enum = 1,
},
},
},
chorus = {
enum = 2,
params = {
waveform_sinusoid = {
enum = 0,
},
phase = {
max = 180,
enum = 2,
min = -180,
default = 90,
},
waveform = {
max = 1,
enum = 1,
min = 0,
default = 1,
},
rate = {
max = 10,
enum = 3,
min = 0,
default = 1.1,
},
feedback = {
max = 1,
enum = 5,
min = -1,
default = 0.25,
},
delay = {
max = 0.016,
enum = 6,
min = 0,
default = 0.016,
},
depth = {
max = 1,
enum = 4,
min = 0,
default = 0.1,
},
waveform_triangle = {
enum = 1,
},
},
},
ring_modulator = {
enum = 9,
params = {
square = {
enum = 2,
},
sinusoid = {
enum = 0,
},
highpass_cutoff = {
max = 24000,
enum = 2,
min = 0,
default = 800,
},
frequency = {
max = 8000,
enum = 1,
min = 0,
default = 440,
},
waveform = {
max = 2,
enum = 3,
min = 0,
default = 0,
},
sawtooth = {
enum = 1,
},
},
},
autowah = {
enum = 10,
params = {
release_time = {
max = 1,
enum = 2,
min = 0.0001,
default = 0.06,
},
resonance = {
max = 1000,
enum = 3,
min = 2,
default = 1000,
},
attack_time = {
max = 1,
enum = 1,
min = 0.0001,
default = 0.06,
},
peak_gain = {
max = 31621,
enum = 4,
min = 3e-05,
default = 11.22,
},
},
},
echo = {
enum = 4,
params = {
spread = {
max = 1,
enum = 5,
min = -1,
default = -1,
},
lrdelay = {
max = 0.404,
enum = 2,
min = 0,
default = 0.1,
},
delay = {
max = 0.207,
enum = 1,
min = 0,
default = 0.1,
},
time = {
enum = 0.075,
},
damping = {
max = 0.99,
enum = 3,
min = 0,
default = 0.5,
},
feedback = {
max = 1,
enum = 4,
min = 0,
default = 0.5,
},
depth = {
enum = 16,
},
},
},
}
function library.GetAvailableEffects()
return library.EffectParams
end
library.FilterParams = {
gainhf_auto = {
enum = 131082,
params = {
},
},
gain_auto = {
enum = 131083,
params = {
},
},
lowpass = {
enum = 1,
params = {
gainhf = {
max = 1,
enum = 2,
min = 0,
default = 1,
},
gain = {
max = 1,
enum = 1,
min = 0,
default = 1,
},
cutoff = {
enum = 3,
},
},
},
}
function library.GetAvailableFilters()
return library.FilterParams
end
function library.GenEffect()
local id = ffi.new("unsigned int[1]")
library.GenEffects(1, id)
return id[0]
end
function library.GenSource()
local id = ffi.new("unsigned int[1]")
library.GenSources(1, id)
return id[0]
end
function library.GenFilter()
local id = ffi.new("unsigned int[1]")
library.GenFilters(1, id)
return id[0]
end
function library.GenBuffer()
local id = ffi.new("unsigned int[1]")
library.GenBuffers(1, id)
return id[0]
end
function library.GenAuxiliaryEffectSlot()
local id = ffi.new("unsigned int[1]")
library.GenAuxiliaryEffectSlots(1, id)
return id[0]
end
function library.GetErrorString()
local num = library.GetError()
if num == library.e.NO_ERROR then
return "no error"
elseif num == library.e.INVALID_NAME then
return "invalid name"
elseif num == library.e.INVALID_ENUM then
return "invalid enum"
elseif num == library.e.INVALID_VALUE then
return "invalid value"
elseif num == library.e.INVALID_OPERATION then
return "invalid operation"
elseif num == library.e.OUT_OF_MEMORY then
return "out of memory"
end
end
library.clib = CLIB
return library
end package.preload.glfw = function(...) local ffi = require("ffi")
ffi.cdef([[struct GLFWmonitor {};
struct GLFWwindow {};
struct GLFWcursor {};
struct GLFWvidmode {int width;int height;int redBits;int greenBits;int blueBits;int refreshRate;};
struct GLFWgammaramp {unsigned short*red;unsigned short*green;unsigned short*blue;unsigned int size;};
struct GLFWimage {int width;int height;unsigned char*pixels;};
struct GLFWgamepadstate {unsigned char buttons[15];float axes[6];};
void(glfwMaximizeWindow)(struct GLFWwindow*);
void(glfwRestoreWindow)(struct GLFWwindow*);
unsigned long(glfwGetTimerValue)();
void(glfwDestroyCursor)(struct GLFWcursor*);
const char*(glfwGetVersionString)();
void(glfwGetWindowPos)(struct GLFWwindow*,int*,int*);
void(*glfwSetWindowMaximizeCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int)))(struct GLFWwindow*,int);
void(*glfwSetWindowRefreshCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*)))(struct GLFWwindow*);
void(glfwSetWindowShouldClose)(struct GLFWwindow*,int);
const unsigned char*(glfwGetJoystickHats)(int,int*);
void(glfwDestroyWindow)(struct GLFWwindow*);
void(glfwSetCursorPos)(struct GLFWwindow*,double,double);
void(*glfwSetCharCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,unsigned int)))(struct GLFWwindow*,unsigned int);
int(glfwGetPhysicalDevicePresentationSupport)(void*,void*,unsigned int);
void(*glfwSetErrorCallback(void(*cbfun)(int,const char*)))(int,const char*);
int(glfwWindowShouldClose)(struct GLFWwindow*);
void(glfwInitHint)(int,int);
int(glfwCreateWindowSurface)(void*,struct GLFWwindow*,void*,void**);
void(*glfwGetInstanceProcAddress(void*,const char*))();
const char**(glfwGetRequiredInstanceExtensions)(unsigned int*);
int(glfwVulkanSupported)();
void(glfwSwapInterval)(int);
void(glfwSwapBuffers)(struct GLFWwindow*);
struct GLFWwindow*(glfwGetCurrentContext)();
void(glfwMakeContextCurrent)(struct GLFWwindow*);
void(*glfwSetWindowIconifyCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int)))(struct GLFWwindow*,int);
double(glfwGetTime)();
const char*(glfwGetClipboardString)(struct GLFWwindow*);
void(glfwGetVersion)(int*,int*,int*);
int(glfwGetGamepadState)(int,struct GLFWgamepadstate*);
const struct GLFWvidmode*(glfwGetVideoModes)(struct GLFWmonitor*,int*);
int(glfwUpdateGamepadMappings)(const char*);
void(*glfwSetJoystickCallback(void(*cbfun)(int,int)))(int,int);
void*(glfwGetJoystickUserPointer)(int);
void(glfwSetJoystickUserPointer)(int,void*);
const char*(glfwGetJoystickGUID)(int);
const unsigned char*(glfwGetJoystickButtons)(int,int*);
int(glfwJoystickPresent)(int);
int(glfwGetWindowAttrib)(struct GLFWwindow*,int);
void(*glfwSetMouseButtonCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int,int,int)))(struct GLFWwindow*,int,int,int);
void(*glfwSetCharModsCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,unsigned int,int)))(struct GLFWwindow*,unsigned int,int);
void(*glfwSetKeyCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int,int,int,int)))(struct GLFWwindow*,int,int,int,int);
void(glfwSetCursor)(struct GLFWwindow*,struct GLFWcursor*);
struct GLFWcursor*(glfwCreateStandardCursor)(int);
struct GLFWcursor*(glfwCreateCursor)(const struct GLFWimage*,int,int);
void(glfwGetCursorPos)(struct GLFWwindow*,double*,double*);
int(glfwGetMouseButton)(struct GLFWwindow*,int);
int(glfwGetKey)(struct GLFWwindow*,int);
const char*(glfwGetKeyName)(int,int);
void(glfwSetInputMode)(struct GLFWwindow*,int,int);
int(glfwGetInputMode)(struct GLFWwindow*,int);
void(glfwPostEmptyEvent)();
const float*(glfwGetJoystickAxes)(int,int*);
void(glfwPollEvents)();
void(*glfwSetWindowContentScaleCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,float,float)))(struct GLFWwindow*,float,float);
void(*glfwSetWindowFocusCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int)))(struct GLFWwindow*,int);
void(*glfwSetWindowCloseCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*)))(struct GLFWwindow*);
void(*glfwSetWindowPosCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int,int)))(struct GLFWwindow*,int,int);
void*(glfwGetWindowUserPointer)(struct GLFWwindow*);
void(glfwSetWindowUserPointer)(struct GLFWwindow*,void*);
void(glfwSetWindowAttrib)(struct GLFWwindow*,int,int);
struct GLFWwindow*(glfwCreateWindow)(int,int,const char*,struct GLFWmonitor*,struct GLFWwindow*);
void(*glfwSetCursorEnterCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int)))(struct GLFWwindow*,int);
void(glfwFocusWindow)(struct GLFWwindow*);
void(glfwHideWindow)(struct GLFWwindow*);
void(glfwSetWindowIcon)(struct GLFWwindow*,int,const struct GLFWimage*);
void(glfwShowWindow)(struct GLFWwindow*);
void(glfwIconifyWindow)(struct GLFWwindow*);
void(glfwSetWindowOpacity)(struct GLFWwindow*,float);
float(glfwGetWindowOpacity)(struct GLFWwindow*);
void(glfwGetWindowContentScale)(struct GLFWwindow*,float*,float*);
void(glfwGetFramebufferSize)(struct GLFWwindow*,int*,int*);
void(glfwSetWindowSize)(struct GLFWwindow*,int,int);
void(glfwSetWindowAspectRatio)(struct GLFWwindow*,int,int);
void(glfwSetWindowSizeLimits)(struct GLFWwindow*,int,int,int,int);
void(glfwGetWindowSize)(struct GLFWwindow*,int*,int*);
void(glfwSetWindowPos)(struct GLFWwindow*,int,int);
void(glfwWindowHint)(int,int);
void(glfwDefaultWindowHints)();
void(glfwSetGammaRamp)(struct GLFWmonitor*,const struct GLFWgammaramp*);
const struct GLFWgammaramp*(glfwGetGammaRamp)(struct GLFWmonitor*);
void(glfwSetGamma)(struct GLFWmonitor*,float);
const struct GLFWvidmode*(glfwGetVideoMode)(struct GLFWmonitor*);
const char*(glfwGetGamepadName)(int);
void(*glfwSetMonitorCallback(void(*cbfun)(struct GLFWmonitor*,int)))(struct GLFWmonitor*,int);
void*(glfwGetMonitorUserPointer)(struct GLFWmonitor*);
void(*glfwSetFramebufferSizeCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int,int)))(struct GLFWwindow*,int,int);
const char*(glfwGetMonitorName)(struct GLFWmonitor*);
void(glfwGetMonitorContentScale)(struct GLFWmonitor*,float*,float*);
struct GLFWmonitor**(glfwGetMonitors)(int*);
int(glfwGetError)(const char**);
void(glfwTerminate)();
int(glfwInit)();
void(glfwSetWindowTitle)(struct GLFWwindow*,const char*);
void(glfwGetMonitorPos)(struct GLFWmonitor*,int*,int*);
struct GLFWmonitor*(glfwGetPrimaryMonitor)();
unsigned long(glfwGetTimerFrequency)();
void(glfwRequestWindowAttention)(struct GLFWwindow*);
void(*glfwGetProcAddress(const char*))();
void(glfwSetWindowMonitor)(struct GLFWwindow*,struct GLFWmonitor*,int,int,int,int,int);
void(*glfwSetDropCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int,const char**)))(struct GLFWwindow*,int,const char**);
struct GLFWmonitor*(glfwGetWindowMonitor)(struct GLFWwindow*);
int(glfwJoystickIsGamepad)(int);
void(glfwGetWindowFrameSize)(struct GLFWwindow*,int*,int*,int*,int*);
const char*(glfwGetJoystickName)(int);
void(glfwSetMonitorUserPointer)(struct GLFWmonitor*,void*);
void(*glfwSetWindowSizeCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,int,int)))(struct GLFWwindow*,int,int);
void(glfwSetTime)(double);
void(glfwWaitEvents)();
int(glfwExtensionSupported)(const char*);
int(glfwGetKeyScancode)(int);
void(glfwGetMonitorPhysicalSize)(struct GLFWmonitor*,int*,int*);
void(glfwWindowHintString)(int,const char*);
void(glfwSetClipboardString)(struct GLFWwindow*,const char*);
void(*glfwSetCursorPosCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,double,double)))(struct GLFWwindow*,double,double);
void(*glfwSetScrollCallback(struct GLFWwindow*,void(*cbfun)(struct GLFWwindow*,double,double)))(struct GLFWwindow*,double,double);
void(glfwWaitEventsTimeout)(double);
]])
local CLIB = ffi.load(_G.FFI_LIB or "glfw")
local library = {}
library = {
MaximizeWindow = CLIB.glfwMaximizeWindow,
RestoreWindow = CLIB.glfwRestoreWindow,
GetTimerValue = CLIB.glfwGetTimerValue,
DestroyCursor = CLIB.glfwDestroyCursor,
GetVersionString = CLIB.glfwGetVersionString,
GetWindowPos = CLIB.glfwGetWindowPos,
SetWindowMaximizeCallback = CLIB.glfwSetWindowMaximizeCallback,
SetWindowRefreshCallback = CLIB.glfwSetWindowRefreshCallback,
SetWindowShouldClose = CLIB.glfwSetWindowShouldClose,
GetJoystickHats = CLIB.glfwGetJoystickHats,
DestroyWindow = CLIB.glfwDestroyWindow,
SetCursorPos = CLIB.glfwSetCursorPos,
SetCharCallback = CLIB.glfwSetCharCallback,
GetPhysicalDevicePresentationSupport = CLIB.glfwGetPhysicalDevicePresentationSupport,
SetErrorCallback = CLIB.glfwSetErrorCallback,
WindowShouldClose = CLIB.glfwWindowShouldClose,
InitHint = CLIB.glfwInitHint,
CreateWindowSurface = CLIB.glfwCreateWindowSurface,
GetInstanceProcAddress = CLIB.glfwGetInstanceProcAddress,
GetRequiredInstanceExtensions = CLIB.glfwGetRequiredInstanceExtensions,
VulkanSupported = CLIB.glfwVulkanSupported,
SwapInterval = CLIB.glfwSwapInterval,
SwapBuffers = CLIB.glfwSwapBuffers,
GetCurrentContext = CLIB.glfwGetCurrentContext,
MakeContextCurrent = CLIB.glfwMakeContextCurrent,
SetWindowIconifyCallback = CLIB.glfwSetWindowIconifyCallback,
GetTime = CLIB.glfwGetTime,
GetClipboardString = CLIB.glfwGetClipboardString,
GetVersion = CLIB.glfwGetVersion,
GetGamepadState = CLIB.glfwGetGamepadState,
GetVideoModes = CLIB.glfwGetVideoModes,
UpdateGamepadMappings = CLIB.glfwUpdateGamepadMappings,
SetJoystickCallback = CLIB.glfwSetJoystickCallback,
GetJoystickUserPointer = CLIB.glfwGetJoystickUserPointer,
SetJoystickUserPointer = CLIB.glfwSetJoystickUserPointer,
GetJoystickGUID = CLIB.glfwGetJoystickGUID,
GetJoystickButtons = CLIB.glfwGetJoystickButtons,
JoystickPresent = CLIB.glfwJoystickPresent,
GetWindowAttrib = CLIB.glfwGetWindowAttrib,
SetMouseButtonCallback = CLIB.glfwSetMouseButtonCallback,
SetCharModsCallback = CLIB.glfwSetCharModsCallback,
SetKeyCallback = CLIB.glfwSetKeyCallback,
SetCursor = CLIB.glfwSetCursor,
CreateStandardCursor = CLIB.glfwCreateStandardCursor,
CreateCursor = CLIB.glfwCreateCursor,
GetCursorPos = CLIB.glfwGetCursorPos,
GetMouseButton = CLIB.glfwGetMouseButton,
GetKey = CLIB.glfwGetKey,
GetKeyName = CLIB.glfwGetKeyName,
SetInputMode = CLIB.glfwSetInputMode,
GetInputMode = CLIB.glfwGetInputMode,
PostEmptyEvent = CLIB.glfwPostEmptyEvent,
GetJoystickAxes = CLIB.glfwGetJoystickAxes,
PollEvents = CLIB.glfwPollEvents,
SetWindowContentScaleCallback = CLIB.glfwSetWindowContentScaleCallback,
SetWindowFocusCallback = CLIB.glfwSetWindowFocusCallback,
SetWindowCloseCallback = CLIB.glfwSetWindowCloseCallback,
SetWindowPosCallback = CLIB.glfwSetWindowPosCallback,
GetWindowUserPointer = CLIB.glfwGetWindowUserPointer,
SetWindowUserPointer = CLIB.glfwSetWindowUserPointer,
SetWindowAttrib = CLIB.glfwSetWindowAttrib,
CreateWindow = CLIB.glfwCreateWindow,
SetCursorEnterCallback = CLIB.glfwSetCursorEnterCallback,
FocusWindow = CLIB.glfwFocusWindow,
HideWindow = CLIB.glfwHideWindow,
SetWindowIcon = CLIB.glfwSetWindowIcon,
ShowWindow = CLIB.glfwShowWindow,
IconifyWindow = CLIB.glfwIconifyWindow,
SetWindowOpacity = CLIB.glfwSetWindowOpacity,
GetWindowOpacity = CLIB.glfwGetWindowOpacity,
GetWindowContentScale = CLIB.glfwGetWindowContentScale,
GetFramebufferSize = CLIB.glfwGetFramebufferSize,
SetWindowSize = CLIB.glfwSetWindowSize,
SetWindowAspectRatio = CLIB.glfwSetWindowAspectRatio,
SetWindowSizeLimits = CLIB.glfwSetWindowSizeLimits,
GetWindowSize = CLIB.glfwGetWindowSize,
SetWindowPos = CLIB.glfwSetWindowPos,
WindowHint = CLIB.glfwWindowHint,
DefaultWindowHints = CLIB.glfwDefaultWindowHints,
SetGammaRamp = CLIB.glfwSetGammaRamp,
GetGammaRamp = CLIB.glfwGetGammaRamp,
SetGamma = CLIB.glfwSetGamma,
GetVideoMode = CLIB.glfwGetVideoMode,
GetGamepadName = CLIB.glfwGetGamepadName,
SetMonitorCallback = CLIB.glfwSetMonitorCallback,
GetMonitorUserPointer = CLIB.glfwGetMonitorUserPointer,
SetFramebufferSizeCallback = CLIB.glfwSetFramebufferSizeCallback,
GetMonitorName = CLIB.glfwGetMonitorName,
GetMonitorContentScale = CLIB.glfwGetMonitorContentScale,
GetMonitors = CLIB.glfwGetMonitors,
GetError = CLIB.glfwGetError,
Terminate = CLIB.glfwTerminate,
Init = CLIB.glfwInit,
SetWindowTitle = CLIB.glfwSetWindowTitle,
GetMonitorPos = CLIB.glfwGetMonitorPos,
GetPrimaryMonitor = CLIB.glfwGetPrimaryMonitor,
GetTimerFrequency = CLIB.glfwGetTimerFrequency,
RequestWindowAttention = CLIB.glfwRequestWindowAttention,
GetProcAddress = CLIB.glfwGetProcAddress,
SetWindowMonitor = CLIB.glfwSetWindowMonitor,
SetDropCallback = CLIB.glfwSetDropCallback,
GetWindowMonitor = CLIB.glfwGetWindowMonitor,
JoystickIsGamepad = CLIB.glfwJoystickIsGamepad,
GetWindowFrameSize = CLIB.glfwGetWindowFrameSize,
GetJoystickName = CLIB.glfwGetJoystickName,
SetMonitorUserPointer = CLIB.glfwSetMonitorUserPointer,
SetWindowSizeCallback = CLIB.glfwSetWindowSizeCallback,
SetTime = CLIB.glfwSetTime,
WaitEvents = CLIB.glfwWaitEvents,
ExtensionSupported = CLIB.glfwExtensionSupported,
GetKeyScancode = CLIB.glfwGetKeyScancode,
GetMonitorPhysicalSize = CLIB.glfwGetMonitorPhysicalSize,
WindowHintString = CLIB.glfwWindowHintString,
SetClipboardString = CLIB.glfwSetClipboardString,
SetCursorPosCallback = CLIB.glfwSetCursorPosCallback,
SetScrollCallback = CLIB.glfwSetScrollCallback,
WaitEventsTimeout = CLIB.glfwWaitEventsTimeout,
}
library.e = {
APIENTRY_DEFINED = 1,
WINGDIAPI_DEFINED = 1,
CALLBACK_DEFINED = 1,
VERSION_MAJOR = 3,
VERSION_MINOR = 3,
VERSION_REVISION = 0,
TRUE = 1,
FALSE = 0,
RELEASE = 0,
PRESS = 1,
REPEAT = 2,
HAT_CENTERED = 0,
HAT_UP = 1,
HAT_RIGHT = 2,
HAT_DOWN = 4,
HAT_LEFT = 8,
HAT_RIGHT_UP = 3,
HAT_RIGHT_DOWN = 6,
HAT_LEFT_UP = 9,
HAT_LEFT_DOWN = 12,
KEY_UNKNOWN = -1,
KEY_SPACE = 32,
KEY_APOSTROPHE = 39,
KEY_COMMA = 44,
KEY_MINUS = 45,
KEY_PERIOD = 46,
KEY_SLASH = 47,
KEY_0 = 48,
KEY_1 = 49,
KEY_2 = 50,
KEY_3 = 51,
KEY_4 = 52,
KEY_5 = 53,
KEY_6 = 54,
KEY_7 = 55,
KEY_8 = 56,
KEY_9 = 57,
KEY_SEMICOLON = 59,
KEY_EQUAL = 61,
KEY_A = 65,
KEY_B = 66,
KEY_C = 67,
KEY_D = 68,
KEY_E = 69,
KEY_F = 70,
KEY_G = 71,
KEY_H = 72,
KEY_I = 73,
KEY_J = 74,
KEY_K = 75,
KEY_L = 76,
KEY_M = 77,
KEY_N = 78,
KEY_O = 79,
KEY_P = 80,
KEY_Q = 81,
KEY_R = 82,
KEY_S = 83,
KEY_T = 84,
KEY_U = 85,
KEY_V = 86,
KEY_W = 87,
KEY_X = 88,
KEY_Y = 89,
KEY_Z = 90,
KEY_LEFT_BRACKET = 91,
KEY_BACKSLASH = 92,
KEY_RIGHT_BRACKET = 93,
KEY_GRAVE_ACCENT = 96,
KEY_WORLD_1 = 161,
KEY_WORLD_2 = 162,
KEY_ESCAPE = 256,
KEY_ENTER = 257,
KEY_TAB = 258,
KEY_BACKSPACE = 259,
KEY_INSERT = 260,
KEY_DELETE = 261,
KEY_RIGHT = 262,
KEY_LEFT = 263,
KEY_DOWN = 264,
KEY_UP = 265,
KEY_PAGE_UP = 266,
KEY_PAGE_DOWN = 267,
KEY_HOME = 268,
KEY_END = 269,
KEY_CAPS_LOCK = 280,
KEY_SCROLL_LOCK = 281,
KEY_NUM_LOCK = 282,
KEY_PRINT_SCREEN = 283,
KEY_PAUSE = 284,
KEY_F1 = 290,
KEY_F2 = 291,
KEY_F3 = 292,
KEY_F4 = 293,
KEY_F5 = 294,
KEY_F6 = 295,
KEY_F7 = 296,
KEY_F8 = 297,
KEY_F9 = 298,
KEY_F10 = 299,
KEY_F11 = 300,
KEY_F12 = 301,
KEY_F13 = 302,
KEY_F14 = 303,
KEY_F15 = 304,
KEY_F16 = 305,
KEY_F17 = 306,
KEY_F18 = 307,
KEY_F19 = 308,
KEY_F20 = 309,
KEY_F21 = 310,
KEY_F22 = 311,
KEY_F23 = 312,
KEY_F24 = 313,
KEY_F25 = 314,
KEY_KP_0 = 320,
KEY_KP_1 = 321,
KEY_KP_2 = 322,
KEY_KP_3 = 323,
KEY_KP_4 = 324,
KEY_KP_5 = 325,
KEY_KP_6 = 326,
KEY_KP_7 = 327,
KEY_KP_8 = 328,
KEY_KP_9 = 329,
KEY_KP_DECIMAL = 330,
KEY_KP_DIVIDE = 331,
KEY_KP_MULTIPLY = 332,
KEY_KP_SUBTRACT = 333,
KEY_KP_ADD = 334,
KEY_KP_ENTER = 335,
KEY_KP_EQUAL = 336,
KEY_LEFT_SHIFT = 340,
KEY_LEFT_CONTROL = 341,
KEY_LEFT_ALT = 342,
KEY_LEFT_SUPER = 343,
KEY_RIGHT_SHIFT = 344,
KEY_RIGHT_CONTROL = 345,
KEY_RIGHT_ALT = 346,
KEY_RIGHT_SUPER = 347,
KEY_MENU = 348,
KEY_LAST = 348,
MOD_SHIFT = 1,
MOD_CONTROL = 2,
MOD_ALT = 4,
MOD_SUPER = 8,
MOD_CAPS_LOCK = 16,
MOD_NUM_LOCK = 32,
MOUSE_BUTTON_1 = 0,
MOUSE_BUTTON_2 = 1,
MOUSE_BUTTON_3 = 2,
MOUSE_BUTTON_4 = 3,
MOUSE_BUTTON_5 = 4,
MOUSE_BUTTON_6 = 5,
MOUSE_BUTTON_7 = 6,
MOUSE_BUTTON_8 = 7,
MOUSE_BUTTON_LAST = 7,
MOUSE_BUTTON_LEFT = 0,
MOUSE_BUTTON_RIGHT = 1,
MOUSE_BUTTON_MIDDLE = 2,
JOYSTICK_1 = 0,
JOYSTICK_2 = 1,
JOYSTICK_3 = 2,
JOYSTICK_4 = 3,
JOYSTICK_5 = 4,
JOYSTICK_6 = 5,
JOYSTICK_7 = 6,
JOYSTICK_8 = 7,
JOYSTICK_9 = 8,
JOYSTICK_10 = 9,
JOYSTICK_11 = 10,
JOYSTICK_12 = 11,
JOYSTICK_13 = 12,
JOYSTICK_14 = 13,
JOYSTICK_15 = 14,
JOYSTICK_16 = 15,
JOYSTICK_LAST = 15,
GAMEPAD_BUTTON_A = 0,
GAMEPAD_BUTTON_B = 1,
GAMEPAD_BUTTON_X = 2,
GAMEPAD_BUTTON_Y = 3,
GAMEPAD_BUTTON_LEFT_BUMPER = 4,
GAMEPAD_BUTTON_RIGHT_BUMPER = 5,
GAMEPAD_BUTTON_BACK = 6,
GAMEPAD_BUTTON_START = 7,
GAMEPAD_BUTTON_GUIDE = 8,
GAMEPAD_BUTTON_LEFT_THUMB = 9,
GAMEPAD_BUTTON_RIGHT_THUMB = 10,
GAMEPAD_BUTTON_DPAD_UP = 11,
GAMEPAD_BUTTON_DPAD_RIGHT = 12,
GAMEPAD_BUTTON_DPAD_DOWN = 13,
GAMEPAD_BUTTON_DPAD_LEFT = 14,
GAMEPAD_BUTTON_LAST = 14,
GAMEPAD_BUTTON_CROSS = 0,
GAMEPAD_BUTTON_CIRCLE = 1,
GAMEPAD_BUTTON_SQUARE = 2,
GAMEPAD_BUTTON_TRIANGLE = 3,
GAMEPAD_AXIS_LEFT_X = 0,
GAMEPAD_AXIS_LEFT_Y = 1,
GAMEPAD_AXIS_RIGHT_X = 2,
GAMEPAD_AXIS_RIGHT_Y = 3,
GAMEPAD_AXIS_LEFT_TRIGGER = 4,
GAMEPAD_AXIS_RIGHT_TRIGGER = 5,
GAMEPAD_AXIS_LAST = 5,
NO_ERROR = 0,
NOT_INITIALIZED = 65537,
NO_CURRENT_CONTEXT = 65538,
INVALID_ENUM = 65539,
INVALID_VALUE = 65540,
OUT_OF_MEMORY = 65541,
API_UNAVAILABLE = 65542,
VERSION_UNAVAILABLE = 65543,
PLATFORM_ERROR = 65544,
FORMAT_UNAVAILABLE = 65545,
NO_WINDOW_CONTEXT = 65546,
FOCUSED = 131073,
ICONIFIED = 131074,
RESIZABLE = 131075,
VISIBLE = 131076,
DECORATED = 131077,
AUTO_ICONIFY = 131078,
FLOATING = 131079,
MAXIMIZED = 131080,
CENTER_CURSOR = 131081,
TRANSPARENT_FRAMEBUFFER = 131082,
HOVERED = 131083,
RED_BITS = 135169,
GREEN_BITS = 135170,
BLUE_BITS = 135171,
ALPHA_BITS = 135172,
DEPTH_BITS = 135173,
STENCIL_BITS = 135174,
ACCUM_RED_BITS = 135175,
ACCUM_GREEN_BITS = 135176,
ACCUM_BLUE_BITS = 135177,
ACCUM_ALPHA_BITS = 135178,
AUX_BUFFERS = 135179,
STEREO = 135180,
SAMPLES = 135181,
SRGB_CAPABLE = 135182,
REFRESH_RATE = 135183,
DOUBLEBUFFER = 135184,
CLIENT_API = 139265,
CONTEXT_VERSION_MAJOR = 139266,
CONTEXT_VERSION_MINOR = 139267,
CONTEXT_REVISION = 139268,
CONTEXT_ROBUSTNESS = 139269,
OPENGL_FORWARD_COMPAT = 139270,
OPENGL_DEBUG_CONTEXT = 139271,
OPENGL_PROFILE = 139272,
CONTEXT_RELEASE_BEHAVIOR = 139273,
CONTEXT_NO_ERROR = 139274,
CONTEXT_CREATION_API = 139275,
COCOA_RETINA_FRAMEBUFFER = 143361,
COCOA_FRAME_NAME = 143362,
COCOA_GRAPHICS_SWITCHING = 143363,
X11_CLASS_NAME = 147457,
X11_INSTANCE_NAME = 147458,
NO_API = 0,
OPENGL_API = 196609,
OPENGL_ES_API = 196610,
NO_ROBUSTNESS = 0,
NO_RESET_NOTIFICATION = 200705,
LOSE_CONTEXT_ON_RESET = 200706,
OPENGL_ANY_PROFILE = 0,
OPENGL_CORE_PROFILE = 204801,
OPENGL_COMPAT_PROFILE = 204802,
CURSOR = 208897,
STICKY_KEYS = 208898,
STICKY_MOUSE_BUTTONS = 208899,
LOCK_KEY_MODS = 208900,
CURSOR_NORMAL = 212993,
CURSOR_HIDDEN = 212994,
CURSOR_DISABLED = 212995,
ANY_RELEASE_BEHAVIOR = 0,
RELEASE_BEHAVIOR_FLUSH = 217089,
RELEASE_BEHAVIOR_NONE = 217090,
NATIVE_CONTEXT_API = 221185,
EGL_CONTEXT_API = 221186,
OSMESA_CONTEXT_API = 221187,
ARROW_CURSOR = 221185,
IBEAM_CURSOR = 221186,
CROSSHAIR_CURSOR = 221187,
HAND_CURSOR = 221188,
HRESIZE_CURSOR = 221189,
VRESIZE_CURSOR = 221190,
CONNECTED = 262145,
DISCONNECTED = 262146,
JOYSTICK_HAT_BUTTONS = 327681,
COCOA_CHDIR_RESOURCES = 331777,
COCOA_MENUBAR = 331778,
DONT_CARE = -1,
}
function library.GetRequiredInstanceExtensions(extra)
local count = ffi.new("uint32_t[1]")
local array = CLIB.glfwGetRequiredInstanceExtensions(count)
local out = {}
for i = 0, count[0] - 1 do
table.insert(out, ffi.string(array[i]))
end
if extra then
for i,v in ipairs(extra) do
table.insert(out, v)
end
end
return out
end
function library.CreateWindowSurface(instance, window, huh)
local box = ffi.new("struct VkSurfaceKHR_T * [1]")
local status = CLIB.glfwCreateWindowSurface(instance, window, huh, ffi.cast("void **", box))
if status == 0 then
return box[0]
end
return nil, status
end
library.clib = CLIB
return library
end package.preload.freeimage = function(...) local ffi = require("ffi")
ffi.cdef([[typedef enum FREE_IMAGE_FORMAT{FIF_UNKNOWN=-1,FIF_BMP=0,FIF_ICO=1,FIF_JPEG=2,FIF_JNG=3,FIF_KOALA=4,FIF_LBM=5,FIF_IFF=5,FIF_MNG=6,FIF_PBM=7,FIF_PBMRAW=8,FIF_PCD=9,FIF_PCX=10,FIF_PGM=11,FIF_PGMRAW=12,FIF_PNG=13,FIF_PPM=14,FIF_PPMRAW=15,FIF_RAS=16,FIF_TARGA=17,FIF_TIFF=18,FIF_WBMP=19,FIF_PSD=20,FIF_CUT=21,FIF_XBM=22,FIF_XPM=23,FIF_DDS=24,FIF_GIF=25,FIF_HDR=26,FIF_FAXG3=27,FIF_SGI=28,FIF_EXR=29,FIF_J2K=30,FIF_JP2=31,FIF_PFM=32,FIF_PICT=33,FIF_RAW=34,FIF_WEBP=35,FIF_JXR=36};
typedef enum FREE_IMAGE_MDTYPE{FIDT_NOTYPE=0,FIDT_BYTE=1,FIDT_ASCII=2,FIDT_SHORT=3,FIDT_LONG=4,FIDT_RATIONAL=5,FIDT_SBYTE=6,FIDT_UNDEFINED=7,FIDT_SSHORT=8,FIDT_SLONG=9,FIDT_SRATIONAL=10,FIDT_FLOAT=11,FIDT_DOUBLE=12,FIDT_IFD=13,FIDT_PALETTE=14,FIDT_LONG8=16,FIDT_SLONG8=17,FIDT_IFD8=18};
typedef enum FREE_IMAGE_DITHER{FID_FS=0,FID_BAYER4x4=1,FID_BAYER8x8=2,FID_CLUSTER6x6=3,FID_CLUSTER8x8=4,FID_CLUSTER16x16=5,FID_BAYER16x16=6};
typedef enum FREE_IMAGE_MDMODEL{FIMD_NODATA=-1,FIMD_COMMENTS=0,FIMD_EXIF_MAIN=1,FIMD_EXIF_EXIF=2,FIMD_EXIF_GPS=3,FIMD_EXIF_MAKERNOTE=4,FIMD_EXIF_INTEROP=5,FIMD_IPTC=6,FIMD_XMP=7,FIMD_GEOTIFF=8,FIMD_ANIMATION=9,FIMD_CUSTOM=10,FIMD_EXIF_RAW=11};
typedef enum FREE_IMAGE_TYPE{FIT_UNKNOWN=0,FIT_BITMAP=1,FIT_UINT16=2,FIT_INT16=3,FIT_UINT32=4,FIT_INT32=5,FIT_FLOAT=6,FIT_DOUBLE=7,FIT_COMPLEX=8,FIT_RGB16=9,FIT_RGBA16=10,FIT_RGBF=11,FIT_RGBAF=12};
typedef enum FREE_IMAGE_COLOR_TYPE{FIC_MINISWHITE=0,FIC_MINISBLACK=1,FIC_RGB=2,FIC_PALETTE=3,FIC_RGBALPHA=4,FIC_CMYK=5};
typedef enum FREE_IMAGE_COLOR_CHANNEL{FICC_RGB=0,FICC_RED=1,FICC_GREEN=2,FICC_BLUE=3,FICC_ALPHA=4,FICC_BLACK=5,FICC_REAL=6,FICC_IMAG=7,FICC_MAG=8,FICC_PHASE=9};
typedef enum FREE_IMAGE_JPEG_OPERATION{FIJPEG_OP_NONE=0,FIJPEG_OP_FLIP_H=1,FIJPEG_OP_FLIP_V=2,FIJPEG_OP_TRANSPOSE=3,FIJPEG_OP_TRANSVERSE=4,FIJPEG_OP_ROTATE_90=5,FIJPEG_OP_ROTATE_180=6,FIJPEG_OP_ROTATE_270=7};
typedef enum FREE_IMAGE_FILTER{FILTER_BOX=0,FILTER_BICUBIC=1,FILTER_BILINEAR=2,FILTER_BSPLINE=3,FILTER_CATMULLROM=4,FILTER_LANCZOS3=5};
typedef enum FREE_IMAGE_TMO{FITMO_DRAGO03=0,FITMO_REINHARD05=1,FITMO_FATTAL02=2};
typedef enum FREE_IMAGE_QUANTIZE{FIQ_WUQUANT=0,FIQ_NNQUANT=1,FIQ_LFPQUANT=2};
struct FIBITMAP {void*data;};
struct FIMULTIBITMAP {void*data;};
struct tagRGBQUAD {unsigned char rgbBlue;unsigned char rgbGreen;unsigned char rgbRed;unsigned char rgbReserved;};
struct tagBITMAPINFOHEADER {unsigned int biSize;signed int biWidth;signed int biHeight;unsigned short biPlanes;unsigned short biBitCount;unsigned int biCompression;unsigned int biSizeImage;signed int biXPelsPerMeter;signed int biYPelsPerMeter;unsigned int biClrUsed;unsigned int biClrImportant;};
struct tagBITMAPINFO {struct tagBITMAPINFOHEADER bmiHeader;struct tagRGBQUAD bmiColors[1];};
struct FIICCPROFILE {unsigned short flags;unsigned int size;void*data;};
struct FIMETADATA {void*data;};
struct FITAG {void*data;};
struct FreeImageIO {unsigned int(*read_proc)(void*,unsigned int,unsigned int,void*);unsigned int(*write_proc)(void*,unsigned int,unsigned int,void*);int(*seek_proc)(void*,long,int);long(*tell_proc)(void*);};
struct FIMEMORY {void*data;};
struct tagBITMAPINFO*(FreeImage_GetInfo)(struct FIBITMAP*);
void(FreeImage_ConvertLine8To4)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
long(FreeImage_TellMemory)(struct FIMEMORY*);
int(FreeImage_GetFIFCount)();
struct FIBITMAP*(FreeImage_ConvertToUINT16)(struct FIBITMAP*);
unsigned int(FreeImage_WriteMemory)(const void*,unsigned int,unsigned int,struct FIMEMORY*);
struct FIBITMAP*(FreeImage_RotateEx)(struct FIBITMAP*,double,double,double,double,double,signed int);
signed int(FreeImage_IsLittleEndian)();
signed int(FreeImage_Invert)(struct FIBITMAP*);
signed int(FreeImage_SeekMemory)(struct FIMEMORY*,long,int);
struct FIBITMAP*(FreeImage_ToneMapping)(struct FIBITMAP*,enum FREE_IMAGE_TMO,double,double);
struct FIBITMAP*(FreeImage_ConvertTo4Bits)(struct FIBITMAP*);
struct FIMULTIBITMAP*(FreeImage_OpenMultiBitmap)(enum FREE_IMAGE_FORMAT,const char*,signed int,signed int,signed int,int);
void(FreeImage_ConvertLine1To24)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
signed int(FreeImage_SaveU)(enum FREE_IMAGE_FORMAT,struct FIBITMAP*,const int*,int);
struct FIBITMAP*(FreeImage_CreateView)(struct FIBITMAP*,unsigned int,unsigned int,unsigned int,unsigned int);
signed int(FreeImage_GetLockedPageNumbers)(struct FIMULTIBITMAP*,int*,int*);
const char*(FreeImage_GetFIFDescription)(enum FREE_IMAGE_FORMAT);
unsigned short(FreeImage_GetTagID)(struct FITAG*);
signed int(FreeImage_FlipVertical)(struct FIBITMAP*);
unsigned int(FreeImage_GetBPP)(struct FIBITMAP*);
const char*(FreeImage_TagToString)(enum FREE_IMAGE_MDMODEL,struct FITAG*,char*);
signed int(FreeImage_SetTagCount)(struct FITAG*,unsigned int);
signed int(FreeImage_PreMultiplyWithAlpha)(struct FIBITMAP*);
enum FREE_IMAGE_COLOR_TYPE(FreeImage_GetColorType)(struct FIBITMAP*);
struct FIBITMAP*(FreeImage_Copy)(struct FIBITMAP*,int,int,int,int);
struct FIBITMAP*(FreeImage_TmoReinhard05)(struct FIBITMAP*,double,double);
struct FIBITMAP*(FreeImage_GetThumbnail)(struct FIBITMAP*);
const char*(FreeImage_GetCopyrightMessage)();
void(FreeImage_SetDotsPerMeterX)(struct FIBITMAP*,unsigned int);
signed int(FreeImage_SetTagKey)(struct FITAG*,const char*);
struct FIBITMAP*(FreeImage_ConvertFromRawBits)(unsigned char*,int,int,int,unsigned int,unsigned int,unsigned int,unsigned int,signed int);
unsigned int(FreeImage_ZLibCompress)(unsigned char*,unsigned int,unsigned char*,unsigned int);
signed int(FreeImage_GetMetadata)(enum FREE_IMAGE_MDMODEL,struct FIBITMAP*,const char*,struct FITAG**);
signed int(FreeImage_IsTransparent)(struct FIBITMAP*);
void(FreeImage_ConvertLine16_565_To16_555)(unsigned char*,unsigned char*,int);
void(FreeImage_Initialise)(signed int);
signed int(FreeImage_SetTagLength)(struct FITAG*,unsigned int);
void(FreeImage_ConvertLine32To8)(unsigned char*,unsigned char*,int);
signed int(FreeImage_FIFSupportsNoPixels)(enum FREE_IMAGE_FORMAT);
int(FreeImage_GetTransparentIndex)(struct FIBITMAP*);
const void*(FreeImage_GetTagValue)(struct FITAG*);
enum FREE_IMAGE_FORMAT(FreeImage_GetFileTypeU)(const int*,int);
unsigned char*(FreeImage_GetScanLine)(struct FIBITMAP*,int);
struct FIBITMAP*(FreeImage_TmoDrago03)(struct FIBITMAP*,double,double);
unsigned int(FreeImage_ZLibUncompress)(unsigned char*,unsigned int,unsigned char*,unsigned int);
signed int(FreeImage_JPEGTransformFromHandle)(struct FreeImageIO*,void*,struct FreeImageIO*,void*,enum FREE_IMAGE_JPEG_OPERATION,int*,int*,int*,int*,signed int);
signed int(FreeImage_AdjustCurve)(struct FIBITMAP*,unsigned char*,enum FREE_IMAGE_COLOR_CHANNEL);
struct FIICCPROFILE*(FreeImage_GetICCProfile)(struct FIBITMAP*);
void(FreeImage_OutputMessageProc)(int,const char*,...);
struct FIMULTIBITMAP*(FreeImage_LoadMultiBitmapFromMemory)(enum FREE_IMAGE_FORMAT,struct FIMEMORY*,int);
const char*(FreeImage_GetTagKey)(struct FITAG*);
signed int(FreeImage_SetThumbnail)(struct FIBITMAP*,struct FIBITMAP*);
void(FreeImage_SetTransparent)(struct FIBITMAP*,signed int);
unsigned int(FreeImage_GetWidth)(struct FIBITMAP*);
signed int(FreeImage_SetTagType)(struct FITAG*,enum FREE_IMAGE_MDTYPE);
struct FIBITMAP*(FreeImage_ConvertFromRawBitsEx)(signed int,unsigned char*,enum FREE_IMAGE_TYPE,int,int,int,unsigned int,unsigned int,unsigned int,unsigned int,signed int);
signed int(FreeImage_AdjustGamma)(struct FIBITMAP*,double);
void(FreeImage_AppendPage)(struct FIMULTIBITMAP*,struct FIBITMAP*);
void(FreeImage_DeleteTag)(struct FITAG*);
signed int(FreeImage_FlipHorizontal)(struct FIBITMAP*);
unsigned int(FreeImage_GetColorsUsed)(struct FIBITMAP*);
struct FIBITMAP*(FreeImage_LockPage)(struct FIMULTIBITMAP*,int);
struct FIBITMAP*(FreeImage_ConvertToType)(struct FIBITMAP*,enum FREE_IMAGE_TYPE,signed int);
void(FreeImage_DeletePage)(struct FIMULTIBITMAP*,int);
const char*(FreeImage_GetVersion)();
signed int(FreeImage_SetChannel)(struct FIBITMAP*,struct FIBITMAP*,enum FREE_IMAGE_COLOR_CHANNEL);
signed int(FreeImage_HasPixels)(struct FIBITMAP*);
signed int(FreeImage_SetPixelColor)(struct FIBITMAP*,unsigned int,unsigned int,struct tagRGBQUAD*);
unsigned int(FreeImage_GetMetadataCount)(enum FREE_IMAGE_MDMODEL,struct FIBITMAP*);
struct FIBITMAP*(FreeImage_AllocateExT)(enum FREE_IMAGE_TYPE,int,int,int,const void*,int,const struct tagRGBQUAD*,unsigned int,unsigned int,unsigned int);
struct FIBITMAP*(FreeImage_AllocateEx)(int,int,int,const struct tagRGBQUAD*,int,const struct tagRGBQUAD*,unsigned int,unsigned int,unsigned int);
struct FIBITMAP*(FreeImage_EnlargeCanvas)(struct FIBITMAP*,int,int,int,int,const void*,int);
signed int(FreeImage_FillBackground)(struct FIBITMAP*,const void*,int);
void(FreeImage_ConvertLine16To4_555)(unsigned char*,unsigned char*,int);
struct FIBITMAP*(FreeImage_ConvertToGreyscale)(struct FIBITMAP*);
signed int(FreeImage_SetComplexChannel)(struct FIBITMAP*,struct FIBITMAP*,enum FREE_IMAGE_COLOR_CHANNEL);
unsigned char*(FreeImage_GetTransparencyTable)(struct FIBITMAP*);
struct FIBITMAP*(FreeImage_GetComplexChannel)(struct FIBITMAP*,enum FREE_IMAGE_COLOR_CHANNEL);
void(FreeImage_ConvertLine32To24)(unsigned char*,unsigned char*,int);
signed int(FreeImage_FIFSupportsWriting)(enum FREE_IMAGE_FORMAT);
signed int(FreeImage_GetBackgroundColor)(struct FIBITMAP*,struct tagRGBQUAD*);
void(FreeImage_ConvertLine24To32)(unsigned char*,unsigned char*,int);
struct FIBITMAP*(FreeImage_Dither)(struct FIBITMAP*,enum FREE_IMAGE_DITHER);
void(FreeImage_SetDotsPerMeterY)(struct FIBITMAP*,unsigned int);
unsigned int(FreeImage_SwapColors)(struct FIBITMAP*,struct tagRGBQUAD*,struct tagRGBQUAD*,signed int);
struct FIBITMAP*(FreeImage_TmoReinhard05Ex)(struct FIBITMAP*,double,double,double,double);
struct FIBITMAP*(FreeImage_Load)(enum FREE_IMAGE_FORMAT,const char*,int);
struct tagRGBQUAD*(FreeImage_GetPalette)(struct FIBITMAP*);
unsigned int(FreeImage_ApplyColorMapping)(struct FIBITMAP*,struct tagRGBQUAD*,struct tagRGBQUAD*,unsigned int,signed int,signed int);
signed int(FreeImage_AdjustColors)(struct FIBITMAP*,double,double,double,signed int);
int(FreeImage_GetAdjustColorsLookupTable)(unsigned char*,double,double,double,signed int);
signed int(FreeImage_GetHistogram)(struct FIBITMAP*,unsigned int*,enum FREE_IMAGE_COLOR_CHANNEL);
signed int(FreeImage_AdjustContrast)(struct FIBITMAP*,double);
void(FreeImage_ConvertLine1To4)(unsigned char*,unsigned char*,int);
signed int(FreeImage_AdjustBrightness)(struct FIBITMAP*,double);
struct FIBITMAP*(FreeImage_RescaleRect)(struct FIBITMAP*,int,int,int,int,int,int,enum FREE_IMAGE_FILTER,unsigned int);
signed int(FreeImage_SetTagDescription)(struct FITAG*,const char*);
struct FIBITMAP*(FreeImage_Rescale)(struct FIBITMAP*,int,int,enum FREE_IMAGE_FILTER);
signed int(FreeImage_JPEGTransformCombinedFromMemory)(struct FIMEMORY*,struct FIMEMORY*,enum FREE_IMAGE_JPEG_OPERATION,int*,int*,int*,int*,signed int);
struct FIBITMAP*(FreeImage_LoadFromHandle)(enum FREE_IMAGE_FORMAT,struct FreeImageIO*,void*,int);
unsigned int(FreeImage_GetTagLength)(struct FITAG*);
struct FIBITMAP*(FreeImage_Rotate)(struct FIBITMAP*,double,const void*);
struct FIBITMAP*(FreeImage_ConvertToRGBA16)(struct FIBITMAP*);
signed int(FreeImage_SetPixelIndex)(struct FIBITMAP*,unsigned int,unsigned int,unsigned char*);
signed int(FreeImage_JPEGTransformCombined)(const char*,const char*,enum FREE_IMAGE_JPEG_OPERATION,int*,int*,int*,int*,signed int);
void(FreeImage_ConvertLine24To16_565)(unsigned char*,unsigned char*,int);
signed int(FreeImage_JPEGCrop)(const char*,const char*,int,int,int,int);
signed int(FreeImage_JPEGTransformU)(const int*,const int*,enum FREE_IMAGE_JPEG_OPERATION,signed int);
struct FIBITMAP*(FreeImage_ConvertToFloat)(struct FIBITMAP*);
signed int(FreeImage_JPEGTransform)(const char*,const char*,enum FREE_IMAGE_JPEG_OPERATION,signed int);
unsigned int(FreeImage_GetDIBSize)(struct FIBITMAP*);
struct FIBITMAP*(FreeImage_ConvertToRGBAF)(struct FIBITMAP*);
struct FIBITMAP*(FreeImage_MultigridPoissonSolver)(struct FIBITMAP*,int);
void(FreeImage_ConvertLine4To8)(unsigned char*,unsigned char*,int);
void(FreeImage_DestroyICCProfile)(struct FIBITMAP*);
void(FreeImage_ConvertLine24To8)(unsigned char*,unsigned char*,int);
void(FreeImage_ConvertLine16To32_565)(unsigned char*,unsigned char*,int);
signed int(FreeImage_SetMetadata)(enum FREE_IMAGE_MDMODEL,struct FIBITMAP*,const char*,struct FITAG*);
void(FreeImage_ConvertLine4To24)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
signed int(FreeImage_FindNextMetadata)(struct FIMETADATA*,struct FITAG**);
signed int(FreeImage_FIFSupportsICCProfiles)(enum FREE_IMAGE_FORMAT);
unsigned int(FreeImage_ReadMemory)(void*,unsigned int,unsigned int,struct FIMEMORY*);
void(FreeImage_UnlockPage)(struct FIMULTIBITMAP*,struct FIBITMAP*,signed int);
signed int(FreeImage_SetTagValue)(struct FITAG*,const void*);
enum FREE_IMAGE_FORMAT(FreeImage_GetFIFFromFormat)(const char*);
signed int(FreeImage_SetTagID)(struct FITAG*,unsigned short);
struct FIBITMAP*(FreeImage_MakeThumbnail)(struct FIBITMAP*,int,signed int);
struct FIBITMAP*(FreeImage_TmoFattal02)(struct FIBITMAP*,double,double);
unsigned int(FreeImage_GetTagCount)(struct FITAG*);
struct FIMEMORY*(FreeImage_OpenMemory)(unsigned char*,unsigned int);
enum FREE_IMAGE_MDTYPE(FreeImage_GetTagType)(struct FITAG*);
const char*(FreeImage_GetTagDescription)(struct FITAG*);
signed int(FreeImage_SaveToMemory)(enum FREE_IMAGE_FORMAT,struct FIBITMAP*,struct FIMEMORY*,int);
struct FIBITMAP*(FreeImage_Clone)(struct FIBITMAP*);
unsigned int(FreeImage_ZLibCRC32)(unsigned int,unsigned char*,unsigned int);
unsigned int(FreeImage_ZLibGZip)(unsigned char*,unsigned int,unsigned char*,unsigned int);
struct FIBITMAP*(FreeImage_ConvertToStandardType)(struct FIBITMAP*,signed int);
struct FIBITMAP*(FreeImage_ConvertToRGB16)(struct FIBITMAP*);
signed int(FreeImage_CloneMetadata)(struct FIBITMAP*,struct FIBITMAP*);
struct FIBITMAP*(FreeImage_ConvertToRGBF)(struct FIBITMAP*);
signed int(FreeImage_SetBackgroundColor)(struct FIBITMAP*,struct tagRGBQUAD*);
void(FreeImage_ConvertToRawBits)(unsigned char*,struct FIBITMAP*,int,unsigned int,unsigned int,unsigned int,unsigned int,signed int);
void(FreeImage_CloseMemory)(struct FIMEMORY*);
signed int(FreeImage_HasBackgroundColor)(struct FIBITMAP*);
struct FIBITMAP*(FreeImage_Threshold)(struct FIBITMAP*,unsigned char);
struct FIBITMAP*(FreeImage_ConvertTo24Bits)(struct FIBITMAP*);
enum FREE_IMAGE_TYPE(FreeImage_GetImageType)(struct FIBITMAP*);
unsigned int(FreeImage_GetLine)(struct FIBITMAP*);
struct FIBITMAP*(FreeImage_ColorQuantize)(struct FIBITMAP*,enum FREE_IMAGE_QUANTIZE);
enum FREE_IMAGE_FORMAT(FreeImage_GetFileTypeFromHandle)(struct FreeImageIO*,void*,int);
struct FIBITMAP*(FreeImage_ConvertTo32Bits)(struct FIBITMAP*);
struct FIICCPROFILE*(FreeImage_CreateICCProfile)(struct FIBITMAP*,void*,long);
signed int(FreeImage_Paste)(struct FIBITMAP*,struct FIBITMAP*,int,int,int);
int(FreeImage_IsPluginEnabled)(enum FREE_IMAGE_FORMAT);
struct FIBITMAP*(FreeImage_ConvertTo8Bits)(struct FIBITMAP*);
unsigned int(FreeImage_ApplyPaletteIndexMapping)(struct FIBITMAP*,unsigned char*,unsigned char*,unsigned int,signed int);
signed int(FreeImage_SetMetadataKeyValue)(enum FREE_IMAGE_MDMODEL,struct FIBITMAP*,const char*,const char*);
void(FreeImage_ConvertLine16To32_555)(unsigned char*,unsigned char*,int);
void(FreeImage_ConvertLine8To32)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
unsigned int(FreeImage_GetGreenMask)(struct FIBITMAP*);
void(FreeImage_ConvertLine4To32)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
signed int(FreeImage_FIFSupportsExportType)(enum FREE_IMAGE_FORMAT,enum FREE_IMAGE_TYPE);
struct FIBITMAP*(FreeImage_GetChannel)(struct FIBITMAP*,enum FREE_IMAGE_COLOR_CHANNEL);
void(FreeImage_InsertPage)(struct FIMULTIBITMAP*,int,struct FIBITMAP*);
void(FreeImage_ConvertLine16To24_565)(unsigned char*,unsigned char*,int);
void(FreeImage_ConvertLine16To24_555)(unsigned char*,unsigned char*,int);
unsigned int(FreeImage_GetTransparencyCount)(struct FIBITMAP*);
unsigned int(FreeImage_GetRedMask)(struct FIBITMAP*);
void(FreeImage_ConvertLine8To24)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
void(FreeImage_FindCloseMetadata)(struct FIMETADATA*);
void(FreeImage_ConvertLine32To16_565)(unsigned char*,unsigned char*,int);
signed int(FreeImage_JPEGCropU)(const int*,const int*,int,int,int,int);
void(FreeImage_ConvertLine16_555_To16_565)(unsigned char*,unsigned char*,int);
const char*(FreeImage_GetFIFExtensionList)(enum FREE_IMAGE_FORMAT);
void(FreeImage_ConvertLine32To4)(unsigned char*,unsigned char*,int);
signed int(FreeImage_Save)(enum FREE_IMAGE_FORMAT,struct FIBITMAP*,const char*,int);
void(FreeImage_ConvertLine4To16_555)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
signed int(FreeImage_FIFSupportsExportBPP)(enum FREE_IMAGE_FORMAT,int);
void(FreeImage_SetOutputMessageStdCall)(void(*omf)(enum FREE_IMAGE_FORMAT,const char*));
signed int(FreeImage_JPEGTransformCombinedU)(const int*,const int*,enum FREE_IMAGE_JPEG_OPERATION,int*,int*,int*,int*,signed int);
void(FreeImage_ConvertLine16To4_565)(unsigned char*,unsigned char*,int);
struct tagBITMAPINFOHEADER*(FreeImage_GetInfoHeader)(struct FIBITMAP*);
unsigned int(FreeImage_SwapPaletteIndices)(struct FIBITMAP*,unsigned char*,unsigned char*);
enum FREE_IMAGE_FORMAT(FreeImage_GetFIFFromFilenameU)(const int*);
void(FreeImage_DeInitialise)();
unsigned int(FreeImage_GetPitch)(struct FIBITMAP*);
enum FREE_IMAGE_FORMAT(FreeImage_RegisterExternalPlugin)(const char*,const char*,const char*,const char*,const char*);
unsigned int(FreeImage_GetHeight)(struct FIBITMAP*);
unsigned int(FreeImage_ZLibGUnzip)(unsigned char*,unsigned int,unsigned char*,unsigned int);
enum FREE_IMAGE_FORMAT(FreeImage_GetFileType)(const char*,int);
struct FIBITMAP*(FreeImage_ColorQuantizeEx)(struct FIBITMAP*,enum FREE_IMAGE_QUANTIZE,int,int,struct tagRGBQUAD*);
struct FIMETADATA*(FreeImage_FindFirstMetadata)(enum FREE_IMAGE_MDMODEL,struct FIBITMAP*,struct FITAG**);
void(FreeImage_ConvertLine1To8)(unsigned char*,unsigned char*,int);
struct FIBITMAP*(FreeImage_Composite)(struct FIBITMAP*,signed int,struct tagRGBQUAD*,struct FIBITMAP*);
unsigned char*(FreeImage_GetBits)(struct FIBITMAP*);
signed int(FreeImage_GetPixelIndex)(struct FIBITMAP*,unsigned int,unsigned int,unsigned char*);
unsigned int(FreeImage_GetMemorySize)(struct FIBITMAP*);
void(FreeImage_ConvertLine32To16_555)(unsigned char*,unsigned char*,int);
unsigned int(FreeImage_GetDotsPerMeterY)(struct FIBITMAP*);
void(FreeImage_ConvertLine24To4)(unsigned char*,unsigned char*,int);
void(FreeImage_ConvertLine1To32)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
enum FREE_IMAGE_FORMAT(FreeImage_GetFIFFromMime)(const char*);
struct FITAG*(FreeImage_CreateTag)();
struct FIBITMAP*(FreeImage_LoadFromMemory)(enum FREE_IMAGE_FORMAT,struct FIMEMORY*,int);
enum FREE_IMAGE_FORMAT(FreeImage_GetFileTypeFromMemory)(struct FIMEMORY*,int);
void(FreeImage_Unload)(struct FIBITMAP*);
struct FIBITMAP*(FreeImage_ConvertTo16Bits565)(struct FIBITMAP*);
void(FreeImage_SetTransparentIndex)(struct FIBITMAP*,int);
enum FREE_IMAGE_FORMAT(FreeImage_RegisterLocalPlugin)(void(*proc_address)(struct Plugin*,int),const char*,const char*,const char*,const char*);
signed int(FreeImage_SaveMultiBitmapToHandle)(enum FREE_IMAGE_FORMAT,struct FIMULTIBITMAP*,struct FreeImageIO*,void*,int);
struct FIBITMAP*(FreeImage_LoadU)(enum FREE_IMAGE_FORMAT,const int*,int);
signed int(FreeImage_SaveToHandle)(enum FREE_IMAGE_FORMAT,struct FIBITMAP*,struct FreeImageIO*,void*,int);
signed int(FreeImage_CloseMultiBitmap)(struct FIMULTIBITMAP*,int);
struct FIBITMAP*(FreeImage_Allocate)(int,int,int,unsigned int,unsigned int,unsigned int);
struct FITAG*(FreeImage_CloneTag)(struct FITAG*);
signed int(FreeImage_AcquireMemory)(struct FIMEMORY*,unsigned char**,unsigned int*);
struct FIMULTIBITMAP*(FreeImage_OpenMultiBitmapFromHandle)(enum FREE_IMAGE_FORMAT,struct FreeImageIO*,void*,int);
void(FreeImage_ConvertLine24To16_555)(unsigned char*,unsigned char*,int);
void(FreeImage_SetOutputMessage)(void(*omf)(enum FREE_IMAGE_FORMAT,const char*));
const char*(FreeImage_GetFIFRegExpr)(enum FREE_IMAGE_FORMAT);
unsigned int(FreeImage_GetDotsPerMeterX)(struct FIBITMAP*);
void(FreeImage_ConvertLine8To16_555)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
signed int(FreeImage_MovePage)(struct FIMULTIBITMAP*,int,int);
const char*(FreeImage_GetFormatFromFIF)(enum FREE_IMAGE_FORMAT);
struct FIBITMAP*(FreeImage_RotateClassic)(struct FIBITMAP*,double);
signed int(FreeImage_LookupX11Color)(const char*,unsigned char*,unsigned char*,unsigned char*);
enum FREE_IMAGE_FORMAT(FreeImage_GetFIFFromFilename)(const char*);
int(FreeImage_SetPluginEnabled)(enum FREE_IMAGE_FORMAT,signed int);
int(FreeImage_GetPageCount)(struct FIMULTIBITMAP*);
signed int(FreeImage_GetPixelColor)(struct FIBITMAP*,unsigned int,unsigned int,struct tagRGBQUAD*);
signed int(FreeImage_FIFSupportsReading)(enum FREE_IMAGE_FORMAT);
const char*(FreeImage_GetFIFMimeType)(enum FREE_IMAGE_FORMAT);
signed int(FreeImage_LookupSVGColor)(const char*,unsigned char*,unsigned char*,unsigned char*);
unsigned int(FreeImage_GetBlueMask)(struct FIBITMAP*);
void(FreeImage_SetTransparencyTable)(struct FIBITMAP*,unsigned char*,int);
struct FIBITMAP*(FreeImage_AllocateT)(enum FREE_IMAGE_TYPE,int,int,int,unsigned int,unsigned int,unsigned int);
signed int(FreeImage_SaveMultiBitmapToMemory)(enum FREE_IMAGE_FORMAT,struct FIMULTIBITMAP*,struct FIMEMORY*,int);
void(FreeImage_ConvertLine8To16_565)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
struct FIBITMAP*(FreeImage_ConvertTo16Bits555)(struct FIBITMAP*);
void(FreeImage_ConvertLine16To8_555)(unsigned char*,unsigned char*,int);
void(FreeImage_ConvertLine16To8_565)(unsigned char*,unsigned char*,int);
void(FreeImage_ConvertLine1To16_555)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
void(FreeImage_ConvertLine1To16_565)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
void(FreeImage_ConvertLine4To16_565)(unsigned char*,unsigned char*,int,struct tagRGBQUAD*);
]])
local CLIB = ffi.load(_G.FFI_LIB or "freeimage")
local library = {}
library = {
GetInfo = CLIB.FreeImage_GetInfo,
ConvertLine8To4 = CLIB.FreeImage_ConvertLine8To4,
TellMemory = CLIB.FreeImage_TellMemory,
GetFIFCount = CLIB.FreeImage_GetFIFCount,
ConvertToUINT16 = CLIB.FreeImage_ConvertToUINT16,
WriteMemory = CLIB.FreeImage_WriteMemory,
RotateEx = CLIB.FreeImage_RotateEx,
IsLittleEndian = CLIB.FreeImage_IsLittleEndian,
Invert = CLIB.FreeImage_Invert,
SeekMemory = CLIB.FreeImage_SeekMemory,
ToneMapping = CLIB.FreeImage_ToneMapping,
ConvertTo4Bits = CLIB.FreeImage_ConvertTo4Bits,
OpenMultiBitmap = CLIB.FreeImage_OpenMultiBitmap,
ConvertLine1To24 = CLIB.FreeImage_ConvertLine1To24,
SaveU = CLIB.FreeImage_SaveU,
CreateView = CLIB.FreeImage_CreateView,
GetLockedPageNumbers = CLIB.FreeImage_GetLockedPageNumbers,
GetFIFDescription = CLIB.FreeImage_GetFIFDescription,
GetTagID = CLIB.FreeImage_GetTagID,
FlipVertical = CLIB.FreeImage_FlipVertical,
GetBPP = CLIB.FreeImage_GetBPP,
TagToString = CLIB.FreeImage_TagToString,
SetTagCount = CLIB.FreeImage_SetTagCount,
PreMultiplyWithAlpha = CLIB.FreeImage_PreMultiplyWithAlpha,
GetColorType = CLIB.FreeImage_GetColorType,
Copy = CLIB.FreeImage_Copy,
TmoReinhard05 = CLIB.FreeImage_TmoReinhard05,
GetThumbnail = CLIB.FreeImage_GetThumbnail,
GetCopyrightMessage = CLIB.FreeImage_GetCopyrightMessage,
SetDotsPerMeterX = CLIB.FreeImage_SetDotsPerMeterX,
SetTagKey = CLIB.FreeImage_SetTagKey,
ConvertFromRawBits = CLIB.FreeImage_ConvertFromRawBits,
ZLibCompress = CLIB.FreeImage_ZLibCompress,
GetMetadata = CLIB.FreeImage_GetMetadata,
IsTransparent = CLIB.FreeImage_IsTransparent,
ConvertLine16_565_To16_555 = CLIB.FreeImage_ConvertLine16_565_To16_555,
Initialise = CLIB.FreeImage_Initialise,
SetTagLength = CLIB.FreeImage_SetTagLength,
ConvertLine32To8 = CLIB.FreeImage_ConvertLine32To8,
FIFSupportsNoPixels = CLIB.FreeImage_FIFSupportsNoPixels,
GetTransparentIndex = CLIB.FreeImage_GetTransparentIndex,
GetTagValue = CLIB.FreeImage_GetTagValue,
GetFileTypeU = CLIB.FreeImage_GetFileTypeU,
GetScanLine = CLIB.FreeImage_GetScanLine,
TmoDrago03 = CLIB.FreeImage_TmoDrago03,
ZLibUncompress = CLIB.FreeImage_ZLibUncompress,
JPEGTransformFromHandle = CLIB.FreeImage_JPEGTransformFromHandle,
AdjustCurve = CLIB.FreeImage_AdjustCurve,
GetICCProfile = CLIB.FreeImage_GetICCProfile,
OutputMessageProc = CLIB.FreeImage_OutputMessageProc,
LoadMultiBitmapFromMemory = CLIB.FreeImage_LoadMultiBitmapFromMemory,
GetTagKey = CLIB.FreeImage_GetTagKey,
SetThumbnail = CLIB.FreeImage_SetThumbnail,
SetTransparent = CLIB.FreeImage_SetTransparent,
GetWidth = CLIB.FreeImage_GetWidth,
SetTagType = CLIB.FreeImage_SetTagType,
ConvertFromRawBitsEx = CLIB.FreeImage_ConvertFromRawBitsEx,
AdjustGamma = CLIB.FreeImage_AdjustGamma,
AppendPage = CLIB.FreeImage_AppendPage,
DeleteTag = CLIB.FreeImage_DeleteTag,
FlipHorizontal = CLIB.FreeImage_FlipHorizontal,
GetColorsUsed = CLIB.FreeImage_GetColorsUsed,
LockPage = CLIB.FreeImage_LockPage,
ConvertToType = CLIB.FreeImage_ConvertToType,
DeletePage = CLIB.FreeImage_DeletePage,
GetVersion = CLIB.FreeImage_GetVersion,
SetChannel = CLIB.FreeImage_SetChannel,
HasPixels = CLIB.FreeImage_HasPixels,
SetPixelColor = CLIB.FreeImage_SetPixelColor,
GetMetadataCount = CLIB.FreeImage_GetMetadataCount,
AllocateExT = CLIB.FreeImage_AllocateExT,
AllocateEx = CLIB.FreeImage_AllocateEx,
EnlargeCanvas = CLIB.FreeImage_EnlargeCanvas,
FillBackground = CLIB.FreeImage_FillBackground,
ConvertLine16To4_555 = CLIB.FreeImage_ConvertLine16To4_555,
ConvertToGreyscale = CLIB.FreeImage_ConvertToGreyscale,
SetComplexChannel = CLIB.FreeImage_SetComplexChannel,
GetTransparencyTable = CLIB.FreeImage_GetTransparencyTable,
GetComplexChannel = CLIB.FreeImage_GetComplexChannel,
ConvertLine32To24 = CLIB.FreeImage_ConvertLine32To24,
FIFSupportsWriting = CLIB.FreeImage_FIFSupportsWriting,
GetBackgroundColor = CLIB.FreeImage_GetBackgroundColor,
ConvertLine24To32 = CLIB.FreeImage_ConvertLine24To32,
Dither = CLIB.FreeImage_Dither,
SetDotsPerMeterY = CLIB.FreeImage_SetDotsPerMeterY,
SwapColors = CLIB.FreeImage_SwapColors,
TmoReinhard05Ex = CLIB.FreeImage_TmoReinhard05Ex,
Load = CLIB.FreeImage_Load,
GetPalette = CLIB.FreeImage_GetPalette,
ApplyColorMapping = CLIB.FreeImage_ApplyColorMapping,
AdjustColors = CLIB.FreeImage_AdjustColors,
GetAdjustColorsLookupTable = CLIB.FreeImage_GetAdjustColorsLookupTable,
GetHistogram = CLIB.FreeImage_GetHistogram,
AdjustContrast = CLIB.FreeImage_AdjustContrast,
ConvertLine1To4 = CLIB.FreeImage_ConvertLine1To4,
AdjustBrightness = CLIB.FreeImage_AdjustBrightness,
RescaleRect = CLIB.FreeImage_RescaleRect,
SetTagDescription = CLIB.FreeImage_SetTagDescription,
Rescale = CLIB.FreeImage_Rescale,
JPEGTransformCombinedFromMemory = CLIB.FreeImage_JPEGTransformCombinedFromMemory,
LoadFromHandle = CLIB.FreeImage_LoadFromHandle,
GetTagLength = CLIB.FreeImage_GetTagLength,
Rotate = CLIB.FreeImage_Rotate,
ConvertToRGBA16 = CLIB.FreeImage_ConvertToRGBA16,
SetPixelIndex = CLIB.FreeImage_SetPixelIndex,
JPEGTransformCombined = CLIB.FreeImage_JPEGTransformCombined,
ConvertLine24To16_565 = CLIB.FreeImage_ConvertLine24To16_565,
JPEGCrop = CLIB.FreeImage_JPEGCrop,
JPEGTransformU = CLIB.FreeImage_JPEGTransformU,
ConvertToFloat = CLIB.FreeImage_ConvertToFloat,
JPEGTransform = CLIB.FreeImage_JPEGTransform,
GetDIBSize = CLIB.FreeImage_GetDIBSize,
ConvertToRGBAF = CLIB.FreeImage_ConvertToRGBAF,
MultigridPoissonSolver = CLIB.FreeImage_MultigridPoissonSolver,
ConvertLine4To8 = CLIB.FreeImage_ConvertLine4To8,
DestroyICCProfile = CLIB.FreeImage_DestroyICCProfile,
ConvertLine24To8 = CLIB.FreeImage_ConvertLine24To8,
ConvertLine16To32_565 = CLIB.FreeImage_ConvertLine16To32_565,
SetMetadata = CLIB.FreeImage_SetMetadata,
ConvertLine4To24 = CLIB.FreeImage_ConvertLine4To24,
FindNextMetadata = CLIB.FreeImage_FindNextMetadata,
FIFSupportsICCProfiles = CLIB.FreeImage_FIFSupportsICCProfiles,
ReadMemory = CLIB.FreeImage_ReadMemory,
UnlockPage = CLIB.FreeImage_UnlockPage,
SetTagValue = CLIB.FreeImage_SetTagValue,
GetFIFFromFormat = CLIB.FreeImage_GetFIFFromFormat,
SetTagID = CLIB.FreeImage_SetTagID,
MakeThumbnail = CLIB.FreeImage_MakeThumbnail,
TmoFattal02 = CLIB.FreeImage_TmoFattal02,
GetTagCount = CLIB.FreeImage_GetTagCount,
OpenMemory = CLIB.FreeImage_OpenMemory,
GetTagType = CLIB.FreeImage_GetTagType,
GetTagDescription = CLIB.FreeImage_GetTagDescription,
SaveToMemory = CLIB.FreeImage_SaveToMemory,
Clone = CLIB.FreeImage_Clone,
ZLibCRC32 = CLIB.FreeImage_ZLibCRC32,
ZLibGZip = CLIB.FreeImage_ZLibGZip,
ConvertToStandardType = CLIB.FreeImage_ConvertToStandardType,
ConvertToRGB16 = CLIB.FreeImage_ConvertToRGB16,
CloneMetadata = CLIB.FreeImage_CloneMetadata,
ConvertToRGBF = CLIB.FreeImage_ConvertToRGBF,
SetBackgroundColor = CLIB.FreeImage_SetBackgroundColor,
ConvertToRawBits = CLIB.FreeImage_ConvertToRawBits,
CloseMemory = CLIB.FreeImage_CloseMemory,
HasBackgroundColor = CLIB.FreeImage_HasBackgroundColor,
Threshold = CLIB.FreeImage_Threshold,
ConvertTo24Bits = CLIB.FreeImage_ConvertTo24Bits,
GetImageType = CLIB.FreeImage_GetImageType,
GetLine = CLIB.FreeImage_GetLine,
ColorQuantize = CLIB.FreeImage_ColorQuantize,
GetFileTypeFromHandle = CLIB.FreeImage_GetFileTypeFromHandle,
ConvertTo32Bits = CLIB.FreeImage_ConvertTo32Bits,
CreateICCProfile = CLIB.FreeImage_CreateICCProfile,
Paste = CLIB.FreeImage_Paste,
IsPluginEnabled = CLIB.FreeImage_IsPluginEnabled,
ConvertTo8Bits = CLIB.FreeImage_ConvertTo8Bits,
ApplyPaletteIndexMapping = CLIB.FreeImage_ApplyPaletteIndexMapping,
SetMetadataKeyValue = CLIB.FreeImage_SetMetadataKeyValue,
ConvertLine16To32_555 = CLIB.FreeImage_ConvertLine16To32_555,
ConvertLine8To32 = CLIB.FreeImage_ConvertLine8To32,
GetGreenMask = CLIB.FreeImage_GetGreenMask,
ConvertLine4To32 = CLIB.FreeImage_ConvertLine4To32,
FIFSupportsExportType = CLIB.FreeImage_FIFSupportsExportType,
GetChannel = CLIB.FreeImage_GetChannel,
InsertPage = CLIB.FreeImage_InsertPage,
ConvertLine16To24_565 = CLIB.FreeImage_ConvertLine16To24_565,
ConvertLine16To24_555 = CLIB.FreeImage_ConvertLine16To24_555,
GetTransparencyCount = CLIB.FreeImage_GetTransparencyCount,
GetRedMask = CLIB.FreeImage_GetRedMask,
ConvertLine8To24 = CLIB.FreeImage_ConvertLine8To24,
FindCloseMetadata = CLIB.FreeImage_FindCloseMetadata,
ConvertLine32To16_565 = CLIB.FreeImage_ConvertLine32To16_565,
JPEGCropU = CLIB.FreeImage_JPEGCropU,
ConvertLine16_555_To16_565 = CLIB.FreeImage_ConvertLine16_555_To16_565,
GetFIFExtensionList = CLIB.FreeImage_GetFIFExtensionList,
ConvertLine32To4 = CLIB.FreeImage_ConvertLine32To4,
Save = CLIB.FreeImage_Save,
ConvertLine4To16_555 = CLIB.FreeImage_ConvertLine4To16_555,
FIFSupportsExportBPP = CLIB.FreeImage_FIFSupportsExportBPP,
SetOutputMessageStdCall = CLIB.FreeImage_SetOutputMessageStdCall,
JPEGTransformCombinedU = CLIB.FreeImage_JPEGTransformCombinedU,
ConvertLine16To4_565 = CLIB.FreeImage_ConvertLine16To4_565,
GetInfoHeader = CLIB.FreeImage_GetInfoHeader,
SwapPaletteIndices = CLIB.FreeImage_SwapPaletteIndices,
GetFIFFromFilenameU = CLIB.FreeImage_GetFIFFromFilenameU,
DeInitialise = CLIB.FreeImage_DeInitialise,
GetPitch = CLIB.FreeImage_GetPitch,
GetHeight = CLIB.FreeImage_GetHeight,
ZLibGUnzip = CLIB.FreeImage_ZLibGUnzip,
GetFileType = CLIB.FreeImage_GetFileType,
ColorQuantizeEx = CLIB.FreeImage_ColorQuantizeEx,
FindFirstMetadata = CLIB.FreeImage_FindFirstMetadata,
ConvertLine1To8 = CLIB.FreeImage_ConvertLine1To8,
Composite = CLIB.FreeImage_Composite,
GetBits = CLIB.FreeImage_GetBits,
GetPixelIndex = CLIB.FreeImage_GetPixelIndex,
GetMemorySize = CLIB.FreeImage_GetMemorySize,
ConvertLine32To16_555 = CLIB.FreeImage_ConvertLine32To16_555,
GetDotsPerMeterY = CLIB.FreeImage_GetDotsPerMeterY,
ConvertLine24To4 = CLIB.FreeImage_ConvertLine24To4,
ConvertLine1To32 = CLIB.FreeImage_ConvertLine1To32,
GetFIFFromMime = CLIB.FreeImage_GetFIFFromMime,
CreateTag = CLIB.FreeImage_CreateTag,
LoadFromMemory = CLIB.FreeImage_LoadFromMemory,
GetFileTypeFromMemory = CLIB.FreeImage_GetFileTypeFromMemory,
Unload = CLIB.FreeImage_Unload,
ConvertTo16Bits565 = CLIB.FreeImage_ConvertTo16Bits565,
SetTransparentIndex = CLIB.FreeImage_SetTransparentIndex,
RegisterLocalPlugin = CLIB.FreeImage_RegisterLocalPlugin,
SaveMultiBitmapToHandle = CLIB.FreeImage_SaveMultiBitmapToHandle,
LoadU = CLIB.FreeImage_LoadU,
SaveToHandle = CLIB.FreeImage_SaveToHandle,
CloseMultiBitmap = CLIB.FreeImage_CloseMultiBitmap,
Allocate = CLIB.FreeImage_Allocate,
CloneTag = CLIB.FreeImage_CloneTag,
AcquireMemory = CLIB.FreeImage_AcquireMemory,
OpenMultiBitmapFromHandle = CLIB.FreeImage_OpenMultiBitmapFromHandle,
ConvertLine24To16_555 = CLIB.FreeImage_ConvertLine24To16_555,
SetOutputMessage = CLIB.FreeImage_SetOutputMessage,
GetFIFRegExpr = CLIB.FreeImage_GetFIFRegExpr,
GetDotsPerMeterX = CLIB.FreeImage_GetDotsPerMeterX,
ConvertLine8To16_555 = CLIB.FreeImage_ConvertLine8To16_555,
MovePage = CLIB.FreeImage_MovePage,
GetFormatFromFIF = CLIB.FreeImage_GetFormatFromFIF,
RotateClassic = CLIB.FreeImage_RotateClassic,
LookupX11Color = CLIB.FreeImage_LookupX11Color,
GetFIFFromFilename = CLIB.FreeImage_GetFIFFromFilename,
SetPluginEnabled = CLIB.FreeImage_SetPluginEnabled,
GetPageCount = CLIB.FreeImage_GetPageCount,
GetPixelColor = CLIB.FreeImage_GetPixelColor,
FIFSupportsReading = CLIB.FreeImage_FIFSupportsReading,
GetFIFMimeType = CLIB.FreeImage_GetFIFMimeType,
LookupSVGColor = CLIB.FreeImage_LookupSVGColor,
GetBlueMask = CLIB.FreeImage_GetBlueMask,
SetTransparencyTable = CLIB.FreeImage_SetTransparencyTable,
AllocateT = CLIB.FreeImage_AllocateT,
SaveMultiBitmapToMemory = CLIB.FreeImage_SaveMultiBitmapToMemory,
ConvertLine8To16_565 = CLIB.FreeImage_ConvertLine8To16_565,
ConvertTo16Bits555 = CLIB.FreeImage_ConvertTo16Bits555,
ConvertLine16To8_555 = CLIB.FreeImage_ConvertLine16To8_555,
ConvertLine16To8_565 = CLIB.FreeImage_ConvertLine16To8_565,
ConvertLine1To16_555 = CLIB.FreeImage_ConvertLine1To16_555,
ConvertLine1To16_565 = CLIB.FreeImage_ConvertLine1To16_565,
ConvertLine4To16_565 = CLIB.FreeImage_ConvertLine4To16_565,
}
library.e = {
FORMAT_UNKNOWN = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_UNKNOWN"),
FORMAT_BMP = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_BMP"),
FORMAT_ICO = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_ICO"),
FORMAT_JPEG = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_JPEG"),
FORMAT_JNG = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_JNG"),
FORMAT_KOALA = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_KOALA"),
FORMAT_LBM = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_LBM"),
FORMAT_IFF = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_IFF"),
FORMAT_MNG = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_MNG"),
FORMAT_PBM = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PBM"),
FORMAT_PBMRAW = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PBMRAW"),
FORMAT_PCD = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PCD"),
FORMAT_PCX = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PCX"),
FORMAT_PGM = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PGM"),
FORMAT_PGMRAW = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PGMRAW"),
FORMAT_PNG = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PNG"),
FORMAT_PPM = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PPM"),
FORMAT_PPMRAW = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PPMRAW"),
FORMAT_RAS = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_RAS"),
FORMAT_TARGA = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_TARGA"),
FORMAT_TIFF = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_TIFF"),
FORMAT_WBMP = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_WBMP"),
FORMAT_PSD = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PSD"),
FORMAT_CUT = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_CUT"),
FORMAT_XBM = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_XBM"),
FORMAT_XPM = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_XPM"),
FORMAT_DDS = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_DDS"),
FORMAT_GIF = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_GIF"),
FORMAT_HDR = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_HDR"),
FORMAT_FAXG3 = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_FAXG3"),
FORMAT_SGI = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_SGI"),
FORMAT_EXR = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_EXR"),
FORMAT_J2K = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_J2K"),
FORMAT_JP2 = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_JP2"),
FORMAT_PFM = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PFM"),
FORMAT_PICT = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_PICT"),
FORMAT_RAW = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_RAW"),
FORMAT_WEBP = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_WEBP"),
FORMAT_JXR = ffi.cast("enum FREE_IMAGE_FORMAT", "FIF_JXR"),
METADATA_TYPE_NOTYPE = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_NOTYPE"),
METADATA_TYPE_BYTE = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_BYTE"),
METADATA_TYPE_ASCII = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_ASCII"),
METADATA_TYPE_SHORT = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_SHORT"),
METADATA_TYPE_LONG = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_LONG"),
METADATA_TYPE_RATIONAL = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_RATIONAL"),
METADATA_TYPE_SBYTE = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_SBYTE"),
METADATA_TYPE_UNDEFINED = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_UNDEFINED"),
METADATA_TYPE_SSHORT = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_SSHORT"),
METADATA_TYPE_SLONG = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_SLONG"),
METADATA_TYPE_SRATIONAL = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_SRATIONAL"),
METADATA_TYPE_FLOAT = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_FLOAT"),
METADATA_TYPE_DOUBLE = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_DOUBLE"),
METADATA_TYPE_IFD = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_IFD"),
METADATA_TYPE_PALETTE = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_PALETTE"),
METADATA_TYPE_LONG8 = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_LONG8"),
METADATA_TYPE_SLONG8 = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_SLONG8"),
METADATA_TYPE_IFD8 = ffi.cast("enum FREE_IMAGE_MDTYPE", "FIDT_IFD8"),
DITHER_FS = ffi.cast("enum FREE_IMAGE_DITHER", "FID_FS"),
DITHER_BAYER4x4 = ffi.cast("enum FREE_IMAGE_DITHER", "FID_BAYER4x4"),
DITHER_BAYER8x8 = ffi.cast("enum FREE_IMAGE_DITHER", "FID_BAYER8x8"),
DITHER_CLUSTER6x6 = ffi.cast("enum FREE_IMAGE_DITHER", "FID_CLUSTER6x6"),
DITHER_CLUSTER8x8 = ffi.cast("enum FREE_IMAGE_DITHER", "FID_CLUSTER8x8"),
DITHER_CLUSTER16x16 = ffi.cast("enum FREE_IMAGE_DITHER", "FID_CLUSTER16x16"),
DITHER_BAYER16x16 = ffi.cast("enum FREE_IMAGE_DITHER", "FID_BAYER16x16"),
METADATA_NODATA = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_NODATA"),
METADATA_COMMENTS = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_COMMENTS"),
METADATA_EXIF_MAIN = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_EXIF_MAIN"),
METADATA_EXIF_EXIF = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_EXIF_EXIF"),
METADATA_EXIF_GPS = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_EXIF_GPS"),
METADATA_EXIF_MAKERNOTE = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_EXIF_MAKERNOTE"),
METADATA_EXIF_INTEROP = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_EXIF_INTEROP"),
METADATA_IPTC = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_IPTC"),
METADATA_XMP = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_XMP"),
METADATA_GEOTIFF = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_GEOTIFF"),
METADATA_ANIMATION = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_ANIMATION"),
METADATA_CUSTOM = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_CUSTOM"),
METADATA_EXIF_RAW = ffi.cast("enum FREE_IMAGE_MDMODEL", "FIMD_EXIF_RAW"),
IMAGE_TYPE_UNKNOWN = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_UNKNOWN"),
IMAGE_TYPE_BITMAP = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_BITMAP"),
IMAGE_TYPE_UINT16 = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_UINT16"),
IMAGE_TYPE_INT16 = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_INT16"),
IMAGE_TYPE_UINT32 = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_UINT32"),
IMAGE_TYPE_INT32 = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_INT32"),
IMAGE_TYPE_FLOAT = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_FLOAT"),
IMAGE_TYPE_DOUBLE = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_DOUBLE"),
IMAGE_TYPE_COMPLEX = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_COMPLEX"),
IMAGE_TYPE_RGB16 = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_RGB16"),
IMAGE_TYPE_RGBA16 = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_RGBA16"),
IMAGE_TYPE_RGBF = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_RGBF"),
IMAGE_TYPE_RGBAF = ffi.cast("enum FREE_IMAGE_TYPE", "FIT_RGBAF"),
COLOR_TYPE_MINISWHITE = ffi.cast("enum FREE_IMAGE_COLOR_TYPE", "FIC_MINISWHITE"),
COLOR_TYPE_MINISBLACK = ffi.cast("enum FREE_IMAGE_COLOR_TYPE", "FIC_MINISBLACK"),
COLOR_TYPE_RGB = ffi.cast("enum FREE_IMAGE_COLOR_TYPE", "FIC_RGB"),
COLOR_TYPE_PALETTE = ffi.cast("enum FREE_IMAGE_COLOR_TYPE", "FIC_PALETTE"),
COLOR_TYPE_RGBALPHA = ffi.cast("enum FREE_IMAGE_COLOR_TYPE", "FIC_RGBALPHA"),
COLOR_TYPE_CMYK = ffi.cast("enum FREE_IMAGE_COLOR_TYPE", "FIC_CMYK"),
COLOR_CHANNEL_RGB = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_RGB"),
COLOR_CHANNEL_RED = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_RED"),
COLOR_CHANNEL_GREEN = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_GREEN"),
COLOR_CHANNEL_BLUE = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_BLUE"),
COLOR_CHANNEL_ALPHA = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_ALPHA"),
COLOR_CHANNEL_BLACK = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_BLACK"),
COLOR_CHANNEL_REAL = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_REAL"),
COLOR_CHANNEL_IMAG = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_IMAG"),
COLOR_CHANNEL_MAG = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_MAG"),
COLOR_CHANNEL_PHASE = ffi.cast("enum FREE_IMAGE_COLOR_CHANNEL", "FICC_PHASE"),
JPEG_OPERATION_NONE = ffi.cast("enum FREE_IMAGE_JPEG_OPERATION", "FIJPEG_OP_NONE"),
JPEG_OPERATION_FLIP_H = ffi.cast("enum FREE_IMAGE_JPEG_OPERATION", "FIJPEG_OP_FLIP_H"),
JPEG_OPERATION_FLIP_V = ffi.cast("enum FREE_IMAGE_JPEG_OPERATION", "FIJPEG_OP_FLIP_V"),
JPEG_OPERATION_TRANSPOSE = ffi.cast("enum FREE_IMAGE_JPEG_OPERATION", "FIJPEG_OP_TRANSPOSE"),
JPEG_OPERATION_TRANSVERSE = ffi.cast("enum FREE_IMAGE_JPEG_OPERATION", "FIJPEG_OP_TRANSVERSE"),
JPEG_OPERATION_ROTATE_90 = ffi.cast("enum FREE_IMAGE_JPEG_OPERATION", "FIJPEG_OP_ROTATE_90"),
JPEG_OPERATION_ROTATE_180 = ffi.cast("enum FREE_IMAGE_JPEG_OPERATION", "FIJPEG_OP_ROTATE_180"),
JPEG_OPERATION_ROTATE_270 = ffi.cast("enum FREE_IMAGE_JPEG_OPERATION", "FIJPEG_OP_ROTATE_270"),
IMAGE_FILTER_BOX = ffi.cast("enum FREE_IMAGE_FILTER", "FILTER_BOX"),
IMAGE_FILTER_BICUBIC = ffi.cast("enum FREE_IMAGE_FILTER", "FILTER_BICUBIC"),
IMAGE_FILTER_BILINEAR = ffi.cast("enum FREE_IMAGE_FILTER", "FILTER_BILINEAR"),
IMAGE_FILTER_BSPLINE = ffi.cast("enum FREE_IMAGE_FILTER", "FILTER_BSPLINE"),
IMAGE_FILTER_CATMULLROM = ffi.cast("enum FREE_IMAGE_FILTER", "FILTER_CATMULLROM"),
IMAGE_FILTER_LANCZOS3 = ffi.cast("enum FREE_IMAGE_FILTER", "FILTER_LANCZOS3"),
TONEMAP_OPERATOR_DRAGO03 = ffi.cast("enum FREE_IMAGE_TMO", "FITMO_DRAGO03"),
TONEMAP_OPERATOR_REINHARD05 = ffi.cast("enum FREE_IMAGE_TMO", "FITMO_REINHARD05"),
TONEMAP_OPERATOR_FATTAL02 = ffi.cast("enum FREE_IMAGE_TMO", "FITMO_FATTAL02"),
QUANTIZE_WUQUANT = ffi.cast("enum FREE_IMAGE_QUANTIZE", "FIQ_WUQUANT"),
QUANTIZE_NNQUANT = ffi.cast("enum FREE_IMAGE_QUANTIZE", "FIQ_NNQUANT"),
QUANTIZE_LFPQUANT = ffi.cast("enum FREE_IMAGE_QUANTIZE", "FIQ_LFPQUANT"),
}
do
local function pow2ceil(n)
return 2 ^ math.ceil(math.log(n) / math.log(2))
end
local function create_mip_map(bitmap, w, h, div)
local width = pow2ceil(w)
local height = pow2ceil(h)
local size = width > height and width or height
size = size / (2 ^ div)
local new_bitmap = ffi.gc(library.Rescale(bitmap, size, size, library.e.IMAGE_FILTER_BILINEAR), library.Unload)
return {
data = library.GetBits(new_bitmap),
size = library.GetMemorySize(new_bitmap),
width = size,
height = size,
new_bitmap = new_bitmap,
}
end
function library.LoadImageMipMaps(file_name, flags, format)
local file = io.open(file_name, "rb")
local data = file:read("*all")
file:close()
local buffer = ffi.cast("unsigned char *", data)
local stream = library.OpenMemory(buffer, #data)
local type = format or library.GetFileTypeFromMemory(stream, #data)
local temp = library.LoadFromMemory(type, stream, flags or 0)
local bitmap = library.ConvertTo32Bits(temp)
local width = library.GetWidth(bitmap)
local height = library.GetHeight(bitmap)
local images = {}
for level = 0, math.floor(math.log(math.max(width, height)) / math.log(2)) do
images[level] = create_mip_map(bitmap, width, height, level)
end
library.Unload(bitmap)
library.Unload(temp)
library.CloseMemory(stream)
return images
end
end
function library.LoadImage(data)
local stream_buffer = ffi.cast("unsigned char *", data)
local stream = library.OpenMemory(stream_buffer, #data)
local type = library.GetFileTypeFromMemory(stream, #data)
if type == library.e.FORMAT_UNKNOWN or type > library.e.FORMAT_RAW then -- huh...
library.CloseMemory(stream)
error("unknown format", 2)
end
local bitmap = library.LoadFromMemory(type, stream, 0)
local image_type = library.GetImageType(bitmap)
local color_type = library.GetColorType(bitmap)
stream_buffer = nil
local format = "bgra"
local type = "unsigned_byte"
if color_type == library.e.COLOR_TYPE_RGBALPHA then
format = "bgra"
elseif color_type == library.e.COLOR_TYPE_RGB then
format = "bgr"
elseif color_type == library.e.COLOR_TYPE_MINISBLACK or color_type == library.e.COLOR_TYPE_MINISWHITE then
format = "r"
else
bitmap = library.ConvertTo32Bits(bitmap)
format = "bgra"
wlog("unhandled freeimage color type: %s\nconverting to 8bit rgba", color_type)
end
ffi.gc(bitmap, library.Unload)
if image_type == library.e.IMAGE_TYPE_BITMAP then
type = "unsigned_byte"
elseif image_type == library.e.IMAGE_TYPE_RGBF then
type = "float"
format = "rgb"
elseif image_type == library.e.IMAGE_TYPE_RGBAF then
type = "float"
format = "rgba"
else
wlog("unhandled freeimage format type: %s", image_type)
end
-- the image type of some png images are RGB but bpp is actuall 32bit (RGBA)
local bpp = library.GetBPP(bitmap)
if bpp == 32 then
format = "bgra"
end
local ret = {
buffer = library.GetBits(bitmap),
width = library.GetWidth(bitmap),
height = library.GetHeight(bitmap),
format = format,
type = type,
}
library.CloseMemory(stream)
return ret
end
function library.LoadMultiPageImage(data, flags)
local buffer = ffi.cast("unsigned char *", data)
local stream = library.OpenMemory(buffer, #data)
local type = library.GetFileTypeFromMemory(stream, #data)
local temp = library.LoadMultiBitmapFromMemory(type, stream, flags or 0)
local count = library.GetPageCount(temp)
local out = {}
for page = 0, count - 1 do
local temp = library.LockPage(temp, page)
local bitmap = library.ConvertTo32Bits(temp)
local tag = ffi.new("struct FITAG *[1]")
library.GetMetadata(library.e.METADATA_ANIMATION, bitmap, "FrameLeft", tag)
local x = tonumber(ffi.cast("int", library.GetTagValue(tag[0])))
library.GetMetadata(library.e.METADATA_ANIMATION, bitmap, "FrameTop", tag)
local y = tonumber(ffi.cast("int", library.GetTagValue(tag[0])))
library.GetMetadata(library.e.METADATA_ANIMATION, bitmap, "FrameTime", tag)
local ms = tonumber(ffi.cast("int", library.GetTagValue(tag[0]))) / 1000
library.DeleteTag(tag[0])
local data = library.GetBits(bitmap)
local width = library.GetWidth(bitmap)
local height = library.GetHeight(bitmap)
ffi.gc(bitmap, library.Unload)
table.insert(out, {w = width, h = height, x = x, y = y, ms = ms, data = data})
end
library.CloseMultiBitmap(temp, 0)
return out
end
function library.ImageToBuffer(data, format, force_32bit)
format = format or "png"
local bitmap = library.ConvertFromRawBits(data.buffer, data.width, data.height, data.width * #data.format, #data.format * 8, 0,0,0,0)
local temp
if force_32bit then
temp = bitmap
bitmap = library.ConvertTo32Bits(temp)
end
local mem = library.OpenMemory(nil, 0)
library.SaveToMemory(library.e["FORMAT_" .. format:upper()], bitmap, mem, 0)
local size = library.TellMemory(mem)
local buffer_box = ffi.new("uint8_t *[1]")
local size_box = ffi.new("unsigned int[1]")
local out_buffer = ffi.new("uint8_t[?]", size)
buffer_box[0] = out_buffer
size_box[0] = size
library.AcquireMemory(mem, buffer_box, size_box)
library.Unload(bitmap)
if temp then library.Unload(temp) end
library.CloseMemory(mem)
return buffer_box[0], size_box[0]
end
library.clib = CLIB
return library
end package.preload.vulkan = function(...) local ffi = require("ffi")
ffi.cdef([[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_VIEWPORT_W_SCALING_NV=1000087000,VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT=1000099000,VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT=1000143000,VK_DYNAMIC_STATE_BEGIN_RANGE=0,VK_DYNAMIC_STATE_END_RANGE=8,VK_DYNAMIC_STATE_RANGE_SIZE=9,VK_DYNAMIC_STATE_MAX_ENUM=2147483647};
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_DISPLAY_KHR=1000002000,VK_OBJECT_TYPE_DISPLAY_MODE_KHR=1000002001,VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT=1000011000,VK_OBJECT_TYPE_OBJECT_TABLE_NVX=1000086000,VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX=1000086001,VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT=1000128000,VK_OBJECT_TYPE_VALIDATION_CACHE_EXT=1000160000,VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR=1000085000,VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR=1000156000,VK_OBJECT_TYPE_BEGIN_RANGE=0,VK_OBJECT_TYPE_END_RANGE=25,VK_OBJECT_TYPE_RANGE_SIZE=26,VK_OBJECT_TYPE_MAX_ENUM=2147483647};
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,VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR=1000111000,VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR=1000117000,VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR=1000117001,VK_IMAGE_LAYOUT_BEGIN_RANGE=0,VK_IMAGE_LAYOUT_END_RANGE=8,VK_IMAGE_LAYOUT_RANGE_SIZE=9,VK_IMAGE_LAYOUT_MAX_ENUM=2147483647};
typedef enum VkSamplerMipmapMode{VK_SAMPLER_MIPMAP_MODE_NEAREST=0,VK_SAMPLER_MIPMAP_MODE_LINEAR=1,VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE=0,VK_SAMPLER_MIPMAP_MODE_END_RANGE=1,VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE=2,VK_SAMPLER_MIPMAP_MODE_MAX_ENUM=2147483647};
typedef enum VkIndexType{VK_INDEX_TYPE_UINT16=0,VK_INDEX_TYPE_UINT32=1,VK_INDEX_TYPE_BEGIN_RANGE=0,VK_INDEX_TYPE_END_RANGE=1,VK_INDEX_TYPE_RANGE_SIZE=2,VK_INDEX_TYPE_MAX_ENUM=2147483647};
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=3,VK_CULL_MODE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkObjectEntryTypeNVX{VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX=0,VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX=1,VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX=2,VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX=3,VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX=4,VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX=0,VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX=4,VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX=5,VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX=2147483647};
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_COMMAND_PROCESS_BIT_NVX=131072,VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM=2147483647};
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=2147483647};
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=2147483647};
typedef enum VkTessellationDomainOrigin{VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT=0,VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT=1,VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR=0,VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR=1,VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE=0,VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE=1,VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE=2,VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM=2147483647};
typedef enum VkQueueGlobalPriorityEXT{VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT=128,VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT=256,VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT=512,VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT=1024,VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT=128,VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT=1024,VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT=897,VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT=2147483647};
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=2147483647};
typedef enum VkDependencyFlagBits{VK_DEPENDENCY_BY_REGION_BIT=1,VK_DEPENDENCY_DEVICE_GROUP_BIT=4,VK_DEPENDENCY_VIEW_LOCAL_BIT=2,VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR=2,VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR=4,VK_DEPENDENCY_FLAG_BITS_MAX_ENUM=2147483647};
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_BEGIN_RANGE=0,VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE=4,VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE=5,VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM=2147483647};
typedef enum VkSurfaceCounterFlagBitsEXT{VK_SURFACE_COUNTER_VBLANK_EXT=1,VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT=2147483647};
typedef enum VkFilter{VK_FILTER_NEAREST=0,VK_FILTER_LINEAR=1,VK_FILTER_CUBIC_IMG=1000015000,VK_FILTER_BEGIN_RANGE=0,VK_FILTER_END_RANGE=1,VK_FILTER_RANGE_SIZE=2,VK_FILTER_MAX_ENUM=2147483647};
typedef enum VkDescriptorUpdateTemplateType{VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET=0,VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR=1,VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR=0,VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE=0,VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE=0,VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE=1,VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM=2147483647};
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_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkFenceImportFlagBits{VK_FENCE_IMPORT_TEMPORARY_BIT=1,VK_FENCE_IMPORT_TEMPORARY_BIT_KHR=1,VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkDisplayPlaneAlphaFlagBitsKHR{VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR=1,VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR=2,VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR=4,VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR=8,VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR=2147483647};
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,VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR=8,VK_PIPELINE_CREATE_DISPATCH_BASE_KHR=16,VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkCoverageModulationModeNV{VK_COVERAGE_MODULATION_MODE_NONE_NV=0,VK_COVERAGE_MODULATION_MODE_RGB_NV=1,VK_COVERAGE_MODULATION_MODE_ALPHA_NV=2,VK_COVERAGE_MODULATION_MODE_RGBA_NV=3,VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV=0,VK_COVERAGE_MODULATION_MODE_END_RANGE_NV=3,VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV=4,VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV=2147483647};
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_OPAQUE_FD_BIT_KHR=1,VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR=2,VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR=4,VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR=8,VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM=2147483647};
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_BEGIN_RANGE=0,VK_IMAGE_VIEW_TYPE_END_RANGE=6,VK_IMAGE_VIEW_TYPE_RANGE_SIZE=7,VK_IMAGE_VIEW_TYPE_MAX_ENUM=2147483647};
typedef enum VkQueryControlFlagBits{VK_QUERY_CONTROL_PRECISE_BIT=1,VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkAttachmentDescriptionFlagBits{VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT=1,VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkPipelineCacheHeaderVersion{VK_PIPELINE_CACHE_HEADER_VERSION_ONE=1,VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE=1,VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE=1,VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE=1,VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM=2147483647};
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=2147483647};
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_BEGIN_RANGE=0,VK_PRIMITIVE_TOPOLOGY_END_RANGE=10,VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE=11,VK_PRIMITIVE_TOPOLOGY_MAX_ENUM=2147483647};
typedef enum VkDescriptorBindingFlagBitsEXT{VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT=1,VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT=2,VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT=4,VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT=8,VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT=2147483647};
typedef enum VkValidationCacheHeaderVersionEXT{VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT=1,VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT=1,VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT=1,VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT=1,VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT=2147483647};
typedef enum VkDescriptorSetLayoutCreateFlagBits{VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR=1,VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT=2,VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkConservativeRasterizationModeEXT{VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT=0,VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT=1,VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT=2,VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT=0,VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT=2,VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT=3,VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT=2147483647};
typedef enum VkDisplayPowerStateEXT{VK_DISPLAY_POWER_STATE_OFF_EXT=0,VK_DISPLAY_POWER_STATE_SUSPEND_EXT=1,VK_DISPLAY_POWER_STATE_ON_EXT=2,VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT=0,VK_DISPLAY_POWER_STATE_END_RANGE_EXT=2,VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT=3,VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT=2147483647};
typedef enum VkSamplerYcbcrRange{VK_SAMPLER_YCBCR_RANGE_ITU_FULL=0,VK_SAMPLER_YCBCR_RANGE_ITU_NARROW=1,VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR=0,VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR=1,VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE=0,VK_SAMPLER_YCBCR_RANGE_END_RANGE=1,VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE=2,VK_SAMPLER_YCBCR_RANGE_MAX_ENUM=2147483647};
typedef enum VkDescriptorPoolCreateFlagBits{VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT=1,VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT=2,VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM=2147483647};
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=2147483647};
typedef enum VkDebugUtilsMessageTypeFlagBitsEXT{VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT=1,VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT=2,VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT=4,VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT=2147483647};
typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT{VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT=1,VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT=16,VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT=256,VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT=4096,VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT=2147483647};
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_BEGIN_RANGE=0,VK_COMPARE_OP_END_RANGE=7,VK_COMPARE_OP_RANGE_SIZE=8,VK_COMPARE_OP_MAX_ENUM=2147483647};
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=31,VK_SHADER_STAGE_ALL=2147483647,VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkSubpassDescriptionFlagBits{VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX=1,VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX=2,VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM=2147483647};
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_PARTITIONED_BIT_NV=256,VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM=2147483647};
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_INCOMPATIBLE_DISPLAY_KHR=-1000003001,VK_ERROR_VALIDATION_FAILED_EXT=-1000011001,VK_ERROR_INVALID_SHADER_NV=-1000012000,VK_ERROR_FRAGMENTATION_EXT=-1000161000,VK_ERROR_NOT_PERMITTED_EXT=-1000174001,VK_ERROR_OUT_OF_POOL_MEMORY_KHR=-1000069000,VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR=-1000072003,VK_RESULT_BEGIN_RANGE=-12,VK_RESULT_END_RANGE=5,VK_RESULT_RANGE_SIZE=18,VK_RESULT_MAX_ENUM=2147483647};
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_COPY_SRC_BIT_KHR=1,VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR=2,VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR=4,VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR=8,VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkFenceCreateFlagBits{VK_FENCE_CREATE_SIGNALED_BIT=1,VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM=2147483647};
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_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT=4096,VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR=64,VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR=32,VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR=128,VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR=256,VK_IMAGE_CREATE_DISJOINT_BIT_KHR=512,VK_IMAGE_CREATE_ALIAS_BIT_KHR=1024,VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM=2147483647};
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=2147483647};
typedef enum VkExternalFenceFeatureFlagBits{VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT=1,VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT=2,VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR=1,VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR=2,VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM=2147483647};
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=2147483647};
typedef enum VkQueryType{VK_QUERY_TYPE_OCCLUSION=0,VK_QUERY_TYPE_PIPELINE_STATISTICS=1,VK_QUERY_TYPE_TIMESTAMP=2,VK_QUERY_TYPE_BEGIN_RANGE=0,VK_QUERY_TYPE_END_RANGE=2,VK_QUERY_TYPE_RANGE_SIZE=3,VK_QUERY_TYPE_MAX_ENUM=2147483647};
typedef enum VkDisplayEventTypeEXT{VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT=0,VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT=0,VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT=0,VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT=1,VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT=2147483647};
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_SHARED_DEMAND_REFRESH_KHR=1000111000,VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR=1000111001,VK_PRESENT_MODE_BEGIN_RANGE_KHR=0,VK_PRESENT_MODE_END_RANGE_KHR=3,VK_PRESENT_MODE_RANGE_SIZE_KHR=4,VK_PRESENT_MODE_MAX_ENUM_KHR=2147483647};
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_FLAG_BITS_MAX_ENUM=2147483647};
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_COMMAND_PROCESS_READ_BIT_NVX=131072,VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX=262144,VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT=524288,VK_ACCESS_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkExternalSemaphoreFeatureFlagBits{VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT=1,VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT=2,VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR=1,VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR=2,VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX{VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX=1,VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX=2,VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX=4,VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX=8,VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX=2147483647};
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_CUBIC_BIT_IMG=8192,VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT=65536,VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR=16384,VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR=32768,VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR=131072,VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR=262144,VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR=524288,VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR=1048576,VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR=2097152,VK_FORMAT_FEATURE_DISJOINT_BIT_KHR=4194304,VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR=8388608,VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM=2147483647};
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_DMA_BUF_BIT_EXT=512,VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID=1024,VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT=128,VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT=256,VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR=1,VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR=2,VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR=4,VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR=8,VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR=16,VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR=32,VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR=64,VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkCommandPoolResetFlagBits{VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT=1,VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkMemoryHeapFlagBits{VK_MEMORY_HEAP_DEVICE_LOCAL_BIT=1,VK_MEMORY_HEAP_MULTI_INSTANCE_BIT=2,VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR=2,VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkObjectEntryUsageFlagBitsNVX{VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX=1,VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX=2,VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX=2147483647};
typedef enum VkIndirectCommandsTokenTypeNVX{VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX=0,VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX=1,VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX=2,VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX=3,VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX=4,VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX=5,VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX=6,VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX=7,VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX=0,VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX=7,VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX=8,VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX=2147483647};
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_RGB_IDENTITY_KHR=0,VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR=1,VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR=2,VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR=3,VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR=4,VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE=0,VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE=4,VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE=5,VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM=2147483647};
typedef enum VkDeviceQueueCreateFlagBits{VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT=1,VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM=2147483647};
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_POINTER_FEATURES=1000120000,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_PARAMETER_FEATURES=1000063000,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_DISPLAY_MODE_CREATE_INFO_KHR=1000002000,VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR=1000002001,VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR=1000003000,VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR=1000004000,VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR=1000005000,VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR=1000006000,VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR=1000007000,VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR=1000008000,VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR=1000009000,VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT=1000011000,VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD=1000018000,VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT=1000022000,VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT=1000022001,VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT=1000022002,VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV=1000026000,VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV=1000026001,VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV=1000026002,VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD=1000041000,VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV=1000056000,VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV=1000056001,VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV=1000057000,VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV=1000057001,VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV=1000058000,VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT=1000061000,VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN=1000062000,VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR=1000073000,VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR=1000073001,VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR=1000073002,VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR=1000073003,VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR=1000074000,VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR=1000074001,VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR=1000074002,VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR=1000075000,VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR=1000078000,VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR=1000078001,VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR=1000078002,VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR=1000078003,VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR=1000079000,VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR=1000079001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR=1000080000,VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR=1000084000,VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX=1000086000,VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX=1000086001,VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX=1000086002,VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX=1000086003,VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX=1000086004,VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX=1000086005,VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV=1000087000,VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT=1000090000,VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT=1000091000,VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT=1000091001,VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT=1000091002,VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT=1000091003,VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE=1000092000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX=1000097000,VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV=1000098000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT=1000099000,VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT=1000099001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT=1000101000,VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT=1000101001,VK_STRUCTURE_TYPE_HDR_METADATA_EXT=1000105000,VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR=1000111000,VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR=1000114000,VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR=1000114001,VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR=1000114002,VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR=1000115000,VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR=1000115001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR=1000119000,VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR=1000119001,VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR=1000119002,VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK=1000122000,VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK=1000123000,VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT=1000128000,VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT=1000128001,VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT=1000128002,VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT=1000128003,VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT=1000128004,VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID=1000129000,VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID=1000129001,VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID=1000129002,VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID=1000129003,VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID=1000129004,VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID=1000129005,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT=1000130000,VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT=1000130001,VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT=1000143000,VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT=1000143001,VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT=1000143002,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT=1000143003,VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT=1000143004,VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR=1000147000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT=1000148000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT=1000148001,VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT=1000148002,VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV=1000149000,VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV=1000152000,VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT=1000160000,VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT=1000160001,VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT=1000161000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT=1000161001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT=1000161002,VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT=1000161003,VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT=1000161004,VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT=1000174000,VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT=1000178000,VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT=1000178001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT=1000178002,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD=1000185000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT=1000190000,VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT=1000190001,VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR=1000053000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR=1000053001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR=1000053002,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR=1000059000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR=1000059001,VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR=1000059002,VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR=1000059003,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR=1000059004,VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR=1000059005,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR=1000059006,VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR=1000059007,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR=1000059008,VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR=1000060000,VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR=1000060003,VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR=1000060004,VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR=1000060005,VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR=1000060006,VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR=1000060013,VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR=1000060014,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR=1000070000,VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR=1000070001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR=1000071000,VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR=1000071001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR=1000071002,VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR=1000071003,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR=1000071004,VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR=1000072000,VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR=1000072001,VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR=1000072002,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR=1000076000,VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR=1000076001,VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR=1000077000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR=1000083000,VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR=1000085000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR=1000112000,VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR=1000112001,VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR=1000113000,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR=1000117000,VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR=1000117001,VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR=1000117002,VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR=1000117003,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR=1000120000,VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR=1000127000,VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR=1000127001,VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR=1000146000,VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR=1000146001,VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR=1000146002,VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR=1000146003,VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR=1000146004,VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR=1000156000,VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR=1000156001,VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR=1000156002,VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR=1000156003,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR=1000156004,VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR=1000156005,VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR=1000157000,VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR=1000157001,VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR=1000168000,VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR=1000168001,VK_STRUCTURE_TYPE_BEGIN_RANGE=0,VK_STRUCTURE_TYPE_END_RANGE=48,VK_STRUCTURE_TYPE_RANGE_SIZE=49,VK_STRUCTURE_TYPE_MAX_ENUM=2147483647};
typedef enum VkExternalMemoryFeatureFlagBitsNV{VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV=1,VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV=2,VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV=4,VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV=2147483647};
typedef enum VkVertexInputRate{VK_VERTEX_INPUT_RATE_VERTEX=0,VK_VERTEX_INPUT_RATE_INSTANCE=1,VK_VERTEX_INPUT_RATE_BEGIN_RANGE=0,VK_VERTEX_INPUT_RATE_END_RANGE=1,VK_VERTEX_INPUT_RATE_RANGE_SIZE=2,VK_VERTEX_INPUT_RATE_MAX_ENUM=2147483647};
typedef enum VkChromaLocation{VK_CHROMA_LOCATION_COSITED_EVEN=0,VK_CHROMA_LOCATION_MIDPOINT=1,VK_CHROMA_LOCATION_COSITED_EVEN_KHR=0,VK_CHROMA_LOCATION_MIDPOINT_KHR=1,VK_CHROMA_LOCATION_BEGIN_RANGE=0,VK_CHROMA_LOCATION_END_RANGE=1,VK_CHROMA_LOCATION_RANGE_SIZE=2,VK_CHROMA_LOCATION_MAX_ENUM=2147483647};
typedef enum VkExternalMemoryHandleTypeFlagBitsNV{VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV=1,VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV=2,VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV=4,VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV=8,VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV=2147483647};
typedef enum VkShaderInfoTypeAMD{VK_SHADER_INFO_TYPE_STATISTICS_AMD=0,VK_SHADER_INFO_TYPE_BINARY_AMD=1,VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD=2,VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD=0,VK_SHADER_INFO_TYPE_END_RANGE_AMD=2,VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD=3,VK_SHADER_INFO_TYPE_MAX_ENUM_AMD=2147483647};
typedef enum VkRasterizationOrderAMD{VK_RASTERIZATION_ORDER_STRICT_AMD=0,VK_RASTERIZATION_ORDER_RELAXED_AMD=1,VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD=0,VK_RASTERIZATION_ORDER_END_RANGE_AMD=1,VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD=2,VK_RASTERIZATION_ORDER_MAX_ENUM_AMD=2147483647};
typedef enum VkImageTiling{VK_IMAGE_TILING_OPTIMAL=0,VK_IMAGE_TILING_LINEAR=1,VK_IMAGE_TILING_BEGIN_RANGE=0,VK_IMAGE_TILING_END_RANGE=1,VK_IMAGE_TILING_RANGE_SIZE=2,VK_IMAGE_TILING_MAX_ENUM=2147483647};
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_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_SAMPLER_YCBCR_CONVERSION_EXT=1000156000,VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT=1000085000,VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT=1000085000,VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT=1000156000,VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT=0,VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT=33,VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT=34,VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT=2147483647};
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_PVRTC1_2BPP_UNORM_BLOCK_IMG=1000054000,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG=1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG=1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG=1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG=1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG=1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG=1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG=1000054007,VK_FORMAT_G8B8G8R8_422_UNORM_KHR=1000156000,VK_FORMAT_B8G8R8G8_422_UNORM_KHR=1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR=1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR=1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR=1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR=1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR=1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR=1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR=1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR=1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR=1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR=1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR=1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR=1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR=1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR=1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR=1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR=1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR=1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR=1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR=1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR=1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR=1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR=1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR=1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR=1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR=1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR=1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR=1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR=1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR=1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR=1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR=1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR=1000156033,VK_FORMAT_BEGIN_RANGE=0,VK_FORMAT_END_RANGE=184,VK_FORMAT_RANGE_SIZE=185,VK_FORMAT_MAX_ENUM=2147483647};
typedef enum VkAttachmentStoreOp{VK_ATTACHMENT_STORE_OP_STORE=0,VK_ATTACHMENT_STORE_OP_DONT_CARE=1,VK_ATTACHMENT_STORE_OP_BEGIN_RANGE=0,VK_ATTACHMENT_STORE_OP_END_RANGE=1,VK_ATTACHMENT_STORE_OP_RANGE_SIZE=2,VK_ATTACHMENT_STORE_OP_MAX_ENUM=2147483647};
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_BEGIN_RANGE=0,VK_LOGIC_OP_END_RANGE=15,VK_LOGIC_OP_RANGE_SIZE=16,VK_LOGIC_OP_MAX_ENUM=2147483647};
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_BEGIN_RANGE=0,VK_ATTACHMENT_LOAD_OP_END_RANGE=2,VK_ATTACHMENT_LOAD_OP_RANGE_SIZE=3,VK_ATTACHMENT_LOAD_OP_MAX_ENUM=2147483647};
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=2147483647};
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=2147483647};
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_PLANE_0_BIT_KHR=16,VK_IMAGE_ASPECT_PLANE_1_BIT_KHR=32,VK_IMAGE_ASPECT_PLANE_2_BIT_KHR=64,VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkPointClippingBehavior{VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES=0,VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY=1,VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR=0,VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR=1,VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE=0,VK_POINT_CLIPPING_BEHAVIOR_END_RANGE=1,VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE=2,VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM=2147483647};
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,VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR=1,VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR=2,VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR=4,VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR=8,VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR=16,VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkPolygonMode{VK_POLYGON_MODE_FILL=0,VK_POLYGON_MODE_LINE=1,VK_POLYGON_MODE_POINT=2,VK_POLYGON_MODE_FILL_RECTANGLE_NV=1000153000,VK_POLYGON_MODE_BEGIN_RANGE=0,VK_POLYGON_MODE_END_RANGE=2,VK_POLYGON_MODE_RANGE_SIZE=3,VK_POLYGON_MODE_MAX_ENUM=2147483647};
typedef enum VkColorSpaceKHR{VK_COLOR_SPACE_SRGB_NONLINEAR_KHR=0,VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT=1000104001,VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT=1000104002,VK_COLOR_SPACE_DCI_P3_LINEAR_EXT=1000104003,VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT=1000104004,VK_COLOR_SPACE_BT709_LINEAR_EXT=1000104005,VK_COLOR_SPACE_BT709_NONLINEAR_EXT=1000104006,VK_COLOR_SPACE_BT2020_LINEAR_EXT=1000104007,VK_COLOR_SPACE_HDR10_ST2084_EXT=1000104008,VK_COLOR_SPACE_DOLBYVISION_EXT=1000104009,VK_COLOR_SPACE_HDR10_HLG_EXT=1000104010,VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT=1000104011,VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT=1000104012,VK_COLOR_SPACE_PASS_THROUGH_EXT=1000104013,VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT=1000104014,VK_COLOR_SPACE_BEGIN_RANGE_KHR=0,VK_COLOR_SPACE_END_RANGE_KHR=0,VK_COLOR_SPACE_RANGE_SIZE_KHR=1,VK_COLOR_SPACE_MAX_ENUM_KHR=2147483647};
typedef enum VkImageType{VK_IMAGE_TYPE_1D=0,VK_IMAGE_TYPE_2D=1,VK_IMAGE_TYPE_3D=2,VK_IMAGE_TYPE_BEGIN_RANGE=0,VK_IMAGE_TYPE_END_RANGE=2,VK_IMAGE_TYPE_RANGE_SIZE=3,VK_IMAGE_TYPE_MAX_ENUM=2147483647};
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=2147483647};
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_BEGIN_RANGE=0,VK_BORDER_COLOR_END_RANGE=5,VK_BORDER_COLOR_RANGE_SIZE=6,VK_BORDER_COLOR_MAX_ENUM=2147483647};
typedef enum VkSemaphoreImportFlagBits{VK_SEMAPHORE_IMPORT_TEMPORARY_BIT=1,VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR=1,VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkMemoryAllocateFlagBits{VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT=1,VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR=1,VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkInternalAllocationType{VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE=0,VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE=0,VK_INTERNAL_ALLOCATION_TYPE_END_RANGE=0,VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE=1,VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM=2147483647};
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_DEDICATED_ONLY_BIT_KHR=1,VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR=2,VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR=4,VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkBlendOverlapEXT{VK_BLEND_OVERLAP_UNCORRELATED_EXT=0,VK_BLEND_OVERLAP_DISJOINT_EXT=1,VK_BLEND_OVERLAP_CONJOINT_EXT=2,VK_BLEND_OVERLAP_BEGIN_RANGE_EXT=0,VK_BLEND_OVERLAP_END_RANGE_EXT=2,VK_BLEND_OVERLAP_RANGE_SIZE_EXT=3,VK_BLEND_OVERLAP_MAX_ENUM_EXT=2147483647};
typedef enum VkValidationCheckEXT{VK_VALIDATION_CHECK_ALL_EXT=0,VK_VALIDATION_CHECK_SHADERS_EXT=1,VK_VALIDATION_CHECK_BEGIN_RANGE_EXT=0,VK_VALIDATION_CHECK_END_RANGE_EXT=1,VK_VALIDATION_CHECK_RANGE_SIZE_EXT=2,VK_VALIDATION_CHECK_MAX_ENUM_EXT=2147483647};
typedef enum VkDeviceEventTypeEXT{VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT=0,VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT=0,VK_DEVICE_EVENT_TYPE_END_RANGE_EXT=0,VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT=1,VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT=2147483647};
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=2147483647};
typedef enum VkCommandBufferResetFlagBits{VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT=1,VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkFrontFace{VK_FRONT_FACE_COUNTER_CLOCKWISE=0,VK_FRONT_FACE_CLOCKWISE=1,VK_FRONT_FACE_BEGIN_RANGE=0,VK_FRONT_FACE_END_RANGE=1,VK_FRONT_FACE_RANGE_SIZE=2,VK_FRONT_FACE_MAX_ENUM=2147483647};
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_BEGIN_RANGE=0,VK_DESCRIPTOR_TYPE_END_RANGE=10,VK_DESCRIPTOR_TYPE_RANGE_SIZE=11,VK_DESCRIPTOR_TYPE_MAX_ENUM=2147483647};
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_ZERO_EXT=1000148000,VK_BLEND_OP_SRC_EXT=1000148001,VK_BLEND_OP_DST_EXT=1000148002,VK_BLEND_OP_SRC_OVER_EXT=1000148003,VK_BLEND_OP_DST_OVER_EXT=1000148004,VK_BLEND_OP_SRC_IN_EXT=1000148005,VK_BLEND_OP_DST_IN_EXT=1000148006,VK_BLEND_OP_SRC_OUT_EXT=1000148007,VK_BLEND_OP_DST_OUT_EXT=1000148008,VK_BLEND_OP_SRC_ATOP_EXT=1000148009,VK_BLEND_OP_DST_ATOP_EXT=1000148010,VK_BLEND_OP_XOR_EXT=1000148011,VK_BLEND_OP_MULTIPLY_EXT=1000148012,VK_BLEND_OP_SCREEN_EXT=1000148013,VK_BLEND_OP_OVERLAY_EXT=1000148014,VK_BLEND_OP_DARKEN_EXT=1000148015,VK_BLEND_OP_LIGHTEN_EXT=1000148016,VK_BLEND_OP_COLORDODGE_EXT=1000148017,VK_BLEND_OP_COLORBURN_EXT=1000148018,VK_BLEND_OP_HARDLIGHT_EXT=1000148019,VK_BLEND_OP_SOFTLIGHT_EXT=1000148020,VK_BLEND_OP_DIFFERENCE_EXT=1000148021,VK_BLEND_OP_EXCLUSION_EXT=1000148022,VK_BLEND_OP_INVERT_EXT=1000148023,VK_BLEND_OP_INVERT_RGB_EXT=1000148024,VK_BLEND_OP_LINEARDODGE_EXT=1000148025,VK_BLEND_OP_LINEARBURN_EXT=1000148026,VK_BLEND_OP_VIVIDLIGHT_EXT=1000148027,VK_BLEND_OP_LINEARLIGHT_EXT=1000148028,VK_BLEND_OP_PINLIGHT_EXT=1000148029,VK_BLEND_OP_HARDMIX_EXT=1000148030,VK_BLEND_OP_HSL_HUE_EXT=1000148031,VK_BLEND_OP_HSL_SATURATION_EXT=1000148032,VK_BLEND_OP_HSL_COLOR_EXT=1000148033,VK_BLEND_OP_HSL_LUMINOSITY_EXT=1000148034,VK_BLEND_OP_PLUS_EXT=1000148035,VK_BLEND_OP_PLUS_CLAMPED_EXT=1000148036,VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT=1000148037,VK_BLEND_OP_PLUS_DARKER_EXT=1000148038,VK_BLEND_OP_MINUS_EXT=1000148039,VK_BLEND_OP_MINUS_CLAMPED_EXT=1000148040,VK_BLEND_OP_CONTRAST_EXT=1000148041,VK_BLEND_OP_INVERT_OVG_EXT=1000148042,VK_BLEND_OP_RED_EXT=1000148043,VK_BLEND_OP_GREEN_EXT=1000148044,VK_BLEND_OP_BLUE_EXT=1000148045,VK_BLEND_OP_BEGIN_RANGE=0,VK_BLEND_OP_END_RANGE=4,VK_BLEND_OP_RANGE_SIZE=5,VK_BLEND_OP_MAX_ENUM=2147483647};
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_BEGIN_RANGE=0,VK_BLEND_FACTOR_END_RANGE=18,VK_BLEND_FACTOR_RANGE_SIZE=19,VK_BLEND_FACTOR_MAX_ENUM=2147483647};
typedef enum VkPipelineBindPoint{VK_PIPELINE_BIND_POINT_GRAPHICS=0,VK_PIPELINE_BIND_POINT_COMPUTE=1,VK_PIPELINE_BIND_POINT_BEGIN_RANGE=0,VK_PIPELINE_BIND_POINT_END_RANGE=1,VK_PIPELINE_BIND_POINT_RANGE_SIZE=2,VK_PIPELINE_BIND_POINT_MAX_ENUM=2147483647};
typedef enum VkSharingMode{VK_SHARING_MODE_EXCLUSIVE=0,VK_SHARING_MODE_CONCURRENT=1,VK_SHARING_MODE_BEGIN_RANGE=0,VK_SHARING_MODE_END_RANGE=1,VK_SHARING_MODE_RANGE_SIZE=2,VK_SHARING_MODE_MAX_ENUM=2147483647};
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_BEGIN_RANGE=0,VK_SAMPLER_ADDRESS_MODE_END_RANGE=3,VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE=4,VK_SAMPLER_ADDRESS_MODE_MAX_ENUM=2147483647};
typedef enum VkSparseMemoryBindFlagBits{VK_SPARSE_MEMORY_BIND_METADATA_BIT=1,VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM=2147483647};
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_BEGIN_RANGE=0,VK_PHYSICAL_DEVICE_TYPE_END_RANGE=4,VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE=5,VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM=2147483647};
typedef enum VkViewportCoordinateSwizzleNV{VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV=0,VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV=1,VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV=2,VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV=3,VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV=4,VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV=5,VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV=6,VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV=7,VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV=0,VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV=7,VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV=8,VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV=2147483647};
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=2147483647};
typedef enum VkSubpassContents{VK_SUBPASS_CONTENTS_INLINE=0,VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS=1,VK_SUBPASS_CONTENTS_BEGIN_RANGE=0,VK_SUBPASS_CONTENTS_END_RANGE=1,VK_SUBPASS_CONTENTS_RANGE_SIZE=2,VK_SUBPASS_CONTENTS_MAX_ENUM=2147483647};
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=2147483647};
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=2147483647};
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_BEGIN_RANGE=0,VK_COMPONENT_SWIZZLE_END_RANGE=6,VK_COMPONENT_SWIZZLE_RANGE_SIZE=7,VK_COMPONENT_SWIZZLE_MAX_ENUM=2147483647};
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=2147483647};
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_BEGIN_RANGE=0,VK_STENCIL_OP_END_RANGE=7,VK_STENCIL_OP_RANGE_SIZE=8,VK_STENCIL_OP_MAX_ENUM=2147483647};
typedef enum VkStencilFaceFlagBits{VK_STENCIL_FACE_FRONT_BIT=1,VK_STENCIL_FACE_BACK_BIT=2,VK_STENCIL_FRONT_AND_BACK=3,VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM=2147483647};
typedef enum VkCommandBufferLevel{VK_COMMAND_BUFFER_LEVEL_PRIMARY=0,VK_COMMAND_BUFFER_LEVEL_SECONDARY=1,VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE=0,VK_COMMAND_BUFFER_LEVEL_END_RANGE=1,VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE=2,VK_COMMAND_BUFFER_LEVEL_MAX_ENUM=2147483647};
typedef enum VkDiscardRectangleModeEXT{VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT=0,VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT=1,VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT=0,VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT=1,VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT=2,VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT=2147483647};
typedef enum VkSamplerReductionModeEXT{VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT=0,VK_SAMPLER_REDUCTION_MODE_MIN_EXT=1,VK_SAMPLER_REDUCTION_MODE_MAX_EXT=2,VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT=0,VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT=2,VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT=3,VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT=2147483647};
struct VkInstance_T {};
struct VkPhysicalDevice_T {};
struct VkDevice_T {};
struct VkQueue_T {};
struct VkSemaphore_T {};
struct VkCommandBuffer_T {};
struct VkFence_T {};
struct VkDeviceMemory_T {};
struct VkBuffer_T {};
struct VkImage_T {};
struct VkEvent_T {};
struct VkQueryPool_T {};
struct VkBufferView_T {};
struct VkImageView_T {};
struct VkShaderModule_T {};
struct VkPipelineCache_T {};
struct VkPipelineLayout_T {};
struct VkRenderPass_T {};
struct VkPipeline_T {};
struct VkDescriptorSetLayout_T {};
struct VkSampler_T {};
struct VkDescriptorPool_T {};
struct VkDescriptorSet_T {};
struct VkFramebuffer_T {};
struct VkCommandPool_T {};
struct VkApplicationInfo {enum VkStructureType sType;const void*pNext;const char*pApplicationName;unsigned int applicationVersion;const char*pEngineName;unsigned int engineVersion;unsigned int apiVersion;};
struct VkInstanceCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;const struct VkApplicationInfo*pApplicationInfo;unsigned int enabledLayerCount;const char*const*ppEnabledLayerNames;unsigned int enabledExtensionCount;const char*const*ppEnabledExtensionNames;};
struct VkAllocationCallbacks {void*pUserData;void*(*pfnAllocation)(void*,unsigned long,unsigned long,enum VkSystemAllocationScope);void*(*pfnReallocation)(void*,void*,unsigned long,unsigned long,enum VkSystemAllocationScope);void(*pfnFree)(void*,void*);void(*pfnInternalAllocation)(void*,unsigned long,enum VkInternalAllocationType,enum VkSystemAllocationScope);void(*pfnInternalFree)(void*,unsigned long,enum VkInternalAllocationType,enum VkSystemAllocationScope);};
struct VkPhysicalDeviceFeatures {unsigned int robustBufferAccess;unsigned int fullDrawIndexUint32;unsigned int imageCubeArray;unsigned int independentBlend;unsigned int geometryShader;unsigned int tessellationShader;unsigned int sampleRateShading;unsigned int dualSrcBlend;unsigned int logicOp;unsigned int multiDrawIndirect;unsigned int drawIndirectFirstInstance;unsigned int depthClamp;unsigned int depthBiasClamp;unsigned int fillModeNonSolid;unsigned int depthBounds;unsigned int wideLines;unsigned int largePoints;unsigned int alphaToOne;unsigned int multiViewport;unsigned int samplerAnisotropy;unsigned int textureCompressionETC2;unsigned int textureCompressionASTC_LDR;unsigned int textureCompressionBC;unsigned int occlusionQueryPrecise;unsigned int pipelineStatisticsQuery;unsigned int vertexPipelineStoresAndAtomics;unsigned int fragmentStoresAndAtomics;unsigned int shaderTessellationAndGeometryPointSize;unsigned int shaderImageGatherExtended;unsigned int shaderStorageImageExtendedFormats;unsigned int shaderStorageImageMultisample;unsigned int shaderStorageImageReadWithoutFormat;unsigned int shaderStorageImageWriteWithoutFormat;unsigned int shaderUniformBufferArrayDynamicIndexing;unsigned int shaderSampledImageArrayDynamicIndexing;unsigned int shaderStorageBufferArrayDynamicIndexing;unsigned int shaderStorageImageArrayDynamicIndexing;unsigned int shaderClipDistance;unsigned int shaderCullDistance;unsigned int shaderFloat64;unsigned int shaderInt64;unsigned int shaderInt16;unsigned int shaderResourceResidency;unsigned int shaderResourceMinLod;unsigned int sparseBinding;unsigned int sparseResidencyBuffer;unsigned int sparseResidencyImage2D;unsigned int sparseResidencyImage3D;unsigned int sparseResidency2Samples;unsigned int sparseResidency4Samples;unsigned int sparseResidency8Samples;unsigned int sparseResidency16Samples;unsigned int sparseResidencyAliased;unsigned int variableMultisampleRate;unsigned int inheritedQueries;};
struct VkFormatProperties {unsigned int linearTilingFeatures;unsigned int optimalTilingFeatures;unsigned int bufferFeatures;};
struct VkExtent3D {unsigned int width;unsigned int height;unsigned int depth;};
struct VkImageFormatProperties {struct VkExtent3D maxExtent;unsigned int maxMipLevels;unsigned int maxArrayLayers;unsigned int sampleCounts;unsigned long maxResourceSize;};
struct VkPhysicalDeviceLimits {unsigned int maxImageDimension1D;unsigned int maxImageDimension2D;unsigned int maxImageDimension3D;unsigned int maxImageDimensionCube;unsigned int maxImageArrayLayers;unsigned int maxTexelBufferElements;unsigned int maxUniformBufferRange;unsigned int maxStorageBufferRange;unsigned int maxPushConstantsSize;unsigned int maxMemoryAllocationCount;unsigned int maxSamplerAllocationCount;unsigned long bufferImageGranularity;unsigned long sparseAddressSpaceSize;unsigned int maxBoundDescriptorSets;unsigned int maxPerStageDescriptorSamplers;unsigned int maxPerStageDescriptorUniformBuffers;unsigned int maxPerStageDescriptorStorageBuffers;unsigned int maxPerStageDescriptorSampledImages;unsigned int maxPerStageDescriptorStorageImages;unsigned int maxPerStageDescriptorInputAttachments;unsigned int maxPerStageResources;unsigned int maxDescriptorSetSamplers;unsigned int maxDescriptorSetUniformBuffers;unsigned int maxDescriptorSetUniformBuffersDynamic;unsigned int maxDescriptorSetStorageBuffers;unsigned int maxDescriptorSetStorageBuffersDynamic;unsigned int maxDescriptorSetSampledImages;unsigned int maxDescriptorSetStorageImages;unsigned int maxDescriptorSetInputAttachments;unsigned int maxVertexInputAttributes;unsigned int maxVertexInputBindings;unsigned int maxVertexInputAttributeOffset;unsigned int maxVertexInputBindingStride;unsigned int maxVertexOutputComponents;unsigned int maxTessellationGenerationLevel;unsigned int maxTessellationPatchSize;unsigned int maxTessellationControlPerVertexInputComponents;unsigned int maxTessellationControlPerVertexOutputComponents;unsigned int maxTessellationControlPerPatchOutputComponents;unsigned int maxTessellationControlTotalOutputComponents;unsigned int maxTessellationEvaluationInputComponents;unsigned int maxTessellationEvaluationOutputComponents;unsigned int maxGeometryShaderInvocations;unsigned int maxGeometryInputComponents;unsigned int maxGeometryOutputComponents;unsigned int maxGeometryOutputVertices;unsigned int maxGeometryTotalOutputComponents;unsigned int maxFragmentInputComponents;unsigned int maxFragmentOutputAttachments;unsigned int maxFragmentDualSrcAttachments;unsigned int maxFragmentCombinedOutputResources;unsigned int maxComputeSharedMemorySize;unsigned int maxComputeWorkGroupCount[3];unsigned int maxComputeWorkGroupInvocations;unsigned int maxComputeWorkGroupSize[3];unsigned int subPixelPrecisionBits;unsigned int subTexelPrecisionBits;unsigned int mipmapPrecisionBits;unsigned int maxDrawIndexedIndexValue;unsigned int maxDrawIndirectCount;float maxSamplerLodBias;float maxSamplerAnisotropy;unsigned int maxViewports;unsigned int maxViewportDimensions[2];float viewportBoundsRange[2];unsigned int viewportSubPixelBits;unsigned long minMemoryMapAlignment;unsigned long minTexelBufferOffsetAlignment;unsigned long minUniformBufferOffsetAlignment;unsigned long minStorageBufferOffsetAlignment;int minTexelOffset;unsigned int maxTexelOffset;int minTexelGatherOffset;unsigned int maxTexelGatherOffset;float minInterpolationOffset;float maxInterpolationOffset;unsigned int subPixelInterpolationOffsetBits;unsigned int maxFramebufferWidth;unsigned int maxFramebufferHeight;unsigned int maxFramebufferLayers;unsigned int framebufferColorSampleCounts;unsigned int framebufferDepthSampleCounts;unsigned int framebufferStencilSampleCounts;unsigned int framebufferNoAttachmentsSampleCounts;unsigned int maxColorAttachments;unsigned int sampledImageColorSampleCounts;unsigned int sampledImageIntegerSampleCounts;unsigned int sampledImageDepthSampleCounts;unsigned int sampledImageStencilSampleCounts;unsigned int storageImageSampleCounts;unsigned int maxSampleMaskWords;unsigned int timestampComputeAndGraphics;float timestampPeriod;unsigned int maxClipDistances;unsigned int maxCullDistances;unsigned int maxCombinedClipAndCullDistances;unsigned int discreteQueuePriorities;float pointSizeRange[2];float lineWidthRange[2];float pointSizeGranularity;float lineWidthGranularity;unsigned int strictLines;unsigned int standardSampleLocations;unsigned long optimalBufferCopyOffsetAlignment;unsigned long optimalBufferCopyRowPitchAlignment;unsigned long nonCoherentAtomSize;};
struct VkPhysicalDeviceSparseProperties {unsigned int residencyStandard2DBlockShape;unsigned int residencyStandard2DMultisampleBlockShape;unsigned int residencyStandard3DBlockShape;unsigned int residencyAlignedMipSize;unsigned int residencyNonResidentStrict;};
struct VkPhysicalDeviceProperties {unsigned int apiVersion;unsigned int driverVersion;unsigned int vendorID;unsigned int deviceID;enum VkPhysicalDeviceType deviceType;char deviceName[256];unsigned char pipelineCacheUUID[16];struct VkPhysicalDeviceLimits limits;struct VkPhysicalDeviceSparseProperties sparseProperties;};
struct VkQueueFamilyProperties {unsigned int queueFlags;unsigned int queueCount;unsigned int timestampValidBits;struct VkExtent3D minImageTransferGranularity;};
struct VkMemoryType {unsigned int propertyFlags;unsigned int heapIndex;};
struct VkMemoryHeap {unsigned long size;unsigned int flags;};
struct VkPhysicalDeviceMemoryProperties {unsigned int memoryTypeCount;struct VkMemoryType memoryTypes[32];unsigned int memoryHeapCount;struct VkMemoryHeap memoryHeaps[16];};
struct VkDeviceQueueCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int queueFamilyIndex;unsigned int queueCount;const float*pQueuePriorities;};
struct VkDeviceCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int queueCreateInfoCount;const struct VkDeviceQueueCreateInfo*pQueueCreateInfos;unsigned int enabledLayerCount;const char*const*ppEnabledLayerNames;unsigned int enabledExtensionCount;const char*const*ppEnabledExtensionNames;const struct VkPhysicalDeviceFeatures*pEnabledFeatures;};
struct VkExtensionProperties {char extensionName[256];unsigned int specVersion;};
struct VkLayerProperties {char layerName[256];unsigned int specVersion;unsigned int implementationVersion;char description[256];};
struct VkSubmitInfo {enum VkStructureType sType;const void*pNext;unsigned int waitSemaphoreCount;struct VkSemaphore_T*const*pWaitSemaphores;const unsigned int*pWaitDstStageMask;unsigned int commandBufferCount;struct VkCommandBuffer_T*const*pCommandBuffers;unsigned int signalSemaphoreCount;struct VkSemaphore_T*const*pSignalSemaphores;};
struct VkMemoryAllocateInfo {enum VkStructureType sType;const void*pNext;unsigned long allocationSize;unsigned int memoryTypeIndex;};
struct VkMappedMemoryRange {enum VkStructureType sType;const void*pNext;struct VkDeviceMemory_T*memory;unsigned long offset;unsigned long size;};
struct VkMemoryRequirements {unsigned long size;unsigned long alignment;unsigned int memoryTypeBits;};
struct VkSparseImageFormatProperties {unsigned int aspectMask;struct VkExtent3D imageGranularity;unsigned int flags;};
struct VkSparseImageMemoryRequirements {struct VkSparseImageFormatProperties formatProperties;unsigned int imageMipTailFirstLod;unsigned long imageMipTailSize;unsigned long imageMipTailOffset;unsigned long imageMipTailStride;};
struct VkSparseMemoryBind {unsigned long resourceOffset;unsigned long size;struct VkDeviceMemory_T*memory;unsigned long memoryOffset;unsigned int flags;};
struct VkSparseBufferMemoryBindInfo {struct VkBuffer_T*buffer;unsigned int bindCount;const struct VkSparseMemoryBind*pBinds;};
struct VkSparseImageOpaqueMemoryBindInfo {struct VkImage_T*image;unsigned int bindCount;const struct VkSparseMemoryBind*pBinds;};
struct VkImageSubresource {unsigned int aspectMask;unsigned int mipLevel;unsigned int arrayLayer;};
struct VkOffset3D {int x;int y;int z;};
struct VkSparseImageMemoryBind {struct VkImageSubresource subresource;struct VkOffset3D offset;struct VkExtent3D extent;struct VkDeviceMemory_T*memory;unsigned long memoryOffset;unsigned int flags;};
struct VkSparseImageMemoryBindInfo {struct VkImage_T*image;unsigned int bindCount;const struct VkSparseImageMemoryBind*pBinds;};
struct VkBindSparseInfo {enum VkStructureType sType;const void*pNext;unsigned int waitSemaphoreCount;struct VkSemaphore_T*const*pWaitSemaphores;unsigned int bufferBindCount;const struct VkSparseBufferMemoryBindInfo*pBufferBinds;unsigned int imageOpaqueBindCount;const struct VkSparseImageOpaqueMemoryBindInfo*pImageOpaqueBinds;unsigned int imageBindCount;const struct VkSparseImageMemoryBindInfo*pImageBinds;unsigned int signalSemaphoreCount;struct VkSemaphore_T*const*pSignalSemaphores;};
struct VkFenceCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;};
struct VkSemaphoreCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;};
struct VkEventCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;};
struct VkQueryPoolCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;enum VkQueryType queryType;unsigned int queryCount;unsigned int pipelineStatistics;};
struct VkBufferCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned long size;unsigned int usage;enum VkSharingMode sharingMode;unsigned int queueFamilyIndexCount;const unsigned int*pQueueFamilyIndices;};
struct VkBufferViewCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;struct VkBuffer_T*buffer;enum VkFormat format;unsigned long offset;unsigned long range;};
struct VkImageCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;enum VkImageType imageType;enum VkFormat format;struct VkExtent3D extent;unsigned int mipLevels;unsigned int arrayLayers;enum VkSampleCountFlagBits samples;enum VkImageTiling tiling;unsigned int usage;enum VkSharingMode sharingMode;unsigned int queueFamilyIndexCount;const unsigned int*pQueueFamilyIndices;enum VkImageLayout initialLayout;};
struct VkSubresourceLayout {unsigned long offset;unsigned long size;unsigned long rowPitch;unsigned long arrayPitch;unsigned long depthPitch;};
struct VkComponentMapping {enum VkComponentSwizzle r;enum VkComponentSwizzle g;enum VkComponentSwizzle b;enum VkComponentSwizzle a;};
struct VkImageSubresourceRange {unsigned int aspectMask;unsigned int baseMipLevel;unsigned int levelCount;unsigned int baseArrayLayer;unsigned int layerCount;};
struct VkImageViewCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;struct VkImage_T*image;enum VkImageViewType viewType;enum VkFormat format;struct VkComponentMapping components;struct VkImageSubresourceRange subresourceRange;};
struct VkShaderModuleCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned long codeSize;const unsigned int*pCode;};
struct VkPipelineCacheCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned long initialDataSize;const void*pInitialData;};
struct VkSpecializationMapEntry {unsigned int constantID;unsigned int offset;unsigned long size;};
struct VkSpecializationInfo {unsigned int mapEntryCount;const struct VkSpecializationMapEntry*pMapEntries;unsigned long dataSize;const void*pData;};
struct VkPipelineShaderStageCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;enum VkShaderStageFlagBits stage;struct VkShaderModule_T*module;const char*pName;const struct VkSpecializationInfo*pSpecializationInfo;};
struct VkVertexInputBindingDescription {unsigned int binding;unsigned int stride;enum VkVertexInputRate inputRate;};
struct VkVertexInputAttributeDescription {unsigned int location;unsigned int binding;enum VkFormat format;unsigned int offset;};
struct VkPipelineVertexInputStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int vertexBindingDescriptionCount;const struct VkVertexInputBindingDescription*pVertexBindingDescriptions;unsigned int vertexAttributeDescriptionCount;const struct VkVertexInputAttributeDescription*pVertexAttributeDescriptions;};
struct VkPipelineInputAssemblyStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;enum VkPrimitiveTopology topology;unsigned int primitiveRestartEnable;};
struct VkPipelineTessellationStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int patchControlPoints;};
struct VkViewport {float x;float y;float width;float height;float minDepth;float maxDepth;};
struct VkOffset2D {int x;int y;};
struct VkExtent2D {unsigned int width;unsigned int height;};
struct VkRect2D {struct VkOffset2D offset;struct VkExtent2D extent;};
struct VkPipelineViewportStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int viewportCount;const struct VkViewport*pViewports;unsigned int scissorCount;const struct VkRect2D*pScissors;};
struct VkPipelineRasterizationStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int depthClampEnable;unsigned int rasterizerDiscardEnable;enum VkPolygonMode polygonMode;unsigned int cullMode;enum VkFrontFace frontFace;unsigned int depthBiasEnable;float depthBiasConstantFactor;float depthBiasClamp;float depthBiasSlopeFactor;float lineWidth;};
struct VkPipelineMultisampleStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;enum VkSampleCountFlagBits rasterizationSamples;unsigned int sampleShadingEnable;float minSampleShading;const unsigned int*pSampleMask;unsigned int alphaToCoverageEnable;unsigned int alphaToOneEnable;};
struct VkStencilOpState {enum VkStencilOp failOp;enum VkStencilOp passOp;enum VkStencilOp depthFailOp;enum VkCompareOp compareOp;unsigned int compareMask;unsigned int writeMask;unsigned int reference;};
struct VkPipelineDepthStencilStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int depthTestEnable;unsigned int depthWriteEnable;enum VkCompareOp depthCompareOp;unsigned int depthBoundsTestEnable;unsigned int stencilTestEnable;struct VkStencilOpState front;struct VkStencilOpState back;float minDepthBounds;float maxDepthBounds;};
struct VkPipelineColorBlendAttachmentState {unsigned int blendEnable;enum VkBlendFactor srcColorBlendFactor;enum VkBlendFactor dstColorBlendFactor;enum VkBlendOp colorBlendOp;enum VkBlendFactor srcAlphaBlendFactor;enum VkBlendFactor dstAlphaBlendFactor;enum VkBlendOp alphaBlendOp;unsigned int colorWriteMask;};
struct VkPipelineColorBlendStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int logicOpEnable;enum VkLogicOp logicOp;unsigned int attachmentCount;const struct VkPipelineColorBlendAttachmentState*pAttachments;float blendConstants[4];};
struct VkPipelineDynamicStateCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int dynamicStateCount;const enum VkDynamicState*pDynamicStates;};
struct VkGraphicsPipelineCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int stageCount;const struct VkPipelineShaderStageCreateInfo*pStages;const struct VkPipelineVertexInputStateCreateInfo*pVertexInputState;const struct VkPipelineInputAssemblyStateCreateInfo*pInputAssemblyState;const struct VkPipelineTessellationStateCreateInfo*pTessellationState;const struct VkPipelineViewportStateCreateInfo*pViewportState;const struct VkPipelineRasterizationStateCreateInfo*pRasterizationState;const struct VkPipelineMultisampleStateCreateInfo*pMultisampleState;const struct VkPipelineDepthStencilStateCreateInfo*pDepthStencilState;const struct VkPipelineColorBlendStateCreateInfo*pColorBlendState;const struct VkPipelineDynamicStateCreateInfo*pDynamicState;struct VkPipelineLayout_T*layout;struct VkRenderPass_T*renderPass;unsigned int subpass;struct VkPipeline_T*basePipelineHandle;int basePipelineIndex;};
struct VkComputePipelineCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;struct VkPipelineShaderStageCreateInfo stage;struct VkPipelineLayout_T*layout;struct VkPipeline_T*basePipelineHandle;int basePipelineIndex;};
struct VkPushConstantRange {unsigned int stageFlags;unsigned int offset;unsigned int size;};
struct VkPipelineLayoutCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int setLayoutCount;struct VkDescriptorSetLayout_T*const*pSetLayouts;unsigned int pushConstantRangeCount;const struct VkPushConstantRange*pPushConstantRanges;};
struct VkSamplerCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;enum VkFilter magFilter;enum VkFilter minFilter;enum VkSamplerMipmapMode mipmapMode;enum VkSamplerAddressMode addressModeU;enum VkSamplerAddressMode addressModeV;enum VkSamplerAddressMode addressModeW;float mipLodBias;unsigned int anisotropyEnable;float maxAnisotropy;unsigned int compareEnable;enum VkCompareOp compareOp;float minLod;float maxLod;enum VkBorderColor borderColor;unsigned int unnormalizedCoordinates;};
struct VkDescriptorSetLayoutBinding {unsigned int binding;enum VkDescriptorType descriptorType;unsigned int descriptorCount;unsigned int stageFlags;struct VkSampler_T*const*pImmutableSamplers;};
struct VkDescriptorSetLayoutCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int bindingCount;const struct VkDescriptorSetLayoutBinding*pBindings;};
struct VkDescriptorPoolSize {enum VkDescriptorType type;unsigned int descriptorCount;};
struct VkDescriptorPoolCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int maxSets;unsigned int poolSizeCount;const struct VkDescriptorPoolSize*pPoolSizes;};
struct VkDescriptorSetAllocateInfo {enum VkStructureType sType;const void*pNext;struct VkDescriptorPool_T*descriptorPool;unsigned int descriptorSetCount;struct VkDescriptorSetLayout_T*const*pSetLayouts;};
struct VkDescriptorImageInfo {struct VkSampler_T*sampler;struct VkImageView_T*imageView;enum VkImageLayout imageLayout;};
struct VkDescriptorBufferInfo {struct VkBuffer_T*buffer;unsigned long offset;unsigned long range;};
struct VkWriteDescriptorSet {enum VkStructureType sType;const void*pNext;struct VkDescriptorSet_T*dstSet;unsigned int dstBinding;unsigned int dstArrayElement;unsigned int descriptorCount;enum VkDescriptorType descriptorType;const struct VkDescriptorImageInfo*pImageInfo;const struct VkDescriptorBufferInfo*pBufferInfo;struct VkBufferView_T*const*pTexelBufferView;};
struct VkCopyDescriptorSet {enum VkStructureType sType;const void*pNext;struct VkDescriptorSet_T*srcSet;unsigned int srcBinding;unsigned int srcArrayElement;struct VkDescriptorSet_T*dstSet;unsigned int dstBinding;unsigned int dstArrayElement;unsigned int descriptorCount;};
struct VkFramebufferCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;struct VkRenderPass_T*renderPass;unsigned int attachmentCount;struct VkImageView_T*const*pAttachments;unsigned int width;unsigned int height;unsigned int layers;};
struct VkAttachmentDescription {unsigned int flags;enum VkFormat format;enum VkSampleCountFlagBits samples;enum VkAttachmentLoadOp loadOp;enum VkAttachmentStoreOp storeOp;enum VkAttachmentLoadOp stencilLoadOp;enum VkAttachmentStoreOp stencilStoreOp;enum VkImageLayout initialLayout;enum VkImageLayout finalLayout;};
struct VkAttachmentReference {unsigned int attachment;enum VkImageLayout layout;};
struct VkSubpassDescription {unsigned int flags;enum VkPipelineBindPoint pipelineBindPoint;unsigned int inputAttachmentCount;const struct VkAttachmentReference*pInputAttachments;unsigned int colorAttachmentCount;const struct VkAttachmentReference*pColorAttachments;const struct VkAttachmentReference*pResolveAttachments;const struct VkAttachmentReference*pDepthStencilAttachment;unsigned int preserveAttachmentCount;const unsigned int*pPreserveAttachments;};
struct VkSubpassDependency {unsigned int srcSubpass;unsigned int dstSubpass;unsigned int srcStageMask;unsigned int dstStageMask;unsigned int srcAccessMask;unsigned int dstAccessMask;unsigned int dependencyFlags;};
struct VkRenderPassCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int attachmentCount;const struct VkAttachmentDescription*pAttachments;unsigned int subpassCount;const struct VkSubpassDescription*pSubpasses;unsigned int dependencyCount;const struct VkSubpassDependency*pDependencies;};
struct VkCommandPoolCreateInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int queueFamilyIndex;};
struct VkCommandBufferAllocateInfo {enum VkStructureType sType;const void*pNext;struct VkCommandPool_T*commandPool;enum VkCommandBufferLevel level;unsigned int commandBufferCount;};
struct VkCommandBufferInheritanceInfo {enum VkStructureType sType;const void*pNext;struct VkRenderPass_T*renderPass;unsigned int subpass;struct VkFramebuffer_T*framebuffer;unsigned int occlusionQueryEnable;unsigned int queryFlags;unsigned int pipelineStatistics;};
struct VkCommandBufferBeginInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;const struct VkCommandBufferInheritanceInfo*pInheritanceInfo;};
struct VkBufferCopy {unsigned long srcOffset;unsigned long dstOffset;unsigned long size;};
struct VkImageSubresourceLayers {unsigned int aspectMask;unsigned int mipLevel;unsigned int baseArrayLayer;unsigned int layerCount;};
struct VkImageCopy {struct VkImageSubresourceLayers srcSubresource;struct VkOffset3D srcOffset;struct VkImageSubresourceLayers dstSubresource;struct VkOffset3D dstOffset;struct VkExtent3D extent;};
struct VkImageBlit {struct VkImageSubresourceLayers srcSubresource;struct VkOffset3D srcOffsets[2];struct VkImageSubresourceLayers dstSubresource;struct VkOffset3D dstOffsets[2];};
struct VkBufferImageCopy {unsigned long bufferOffset;unsigned int bufferRowLength;unsigned int bufferImageHeight;struct VkImageSubresourceLayers imageSubresource;struct VkOffset3D imageOffset;struct VkExtent3D imageExtent;};
union VkClearColorValue {float float32[4];int int32[4];unsigned int uint32[4];};
struct VkClearDepthStencilValue {float depth;unsigned int stencil;};
union VkClearValue {union VkClearColorValue color;struct VkClearDepthStencilValue depthStencil;};
struct VkClearAttachment {unsigned int aspectMask;unsigned int colorAttachment;union VkClearValue clearValue;};
struct VkClearRect {struct VkRect2D rect;unsigned int baseArrayLayer;unsigned int layerCount;};
struct VkImageResolve {struct VkImageSubresourceLayers srcSubresource;struct VkOffset3D srcOffset;struct VkImageSubresourceLayers dstSubresource;struct VkOffset3D dstOffset;struct VkExtent3D extent;};
struct VkMemoryBarrier {enum VkStructureType sType;const void*pNext;unsigned int srcAccessMask;unsigned int dstAccessMask;};
struct VkBufferMemoryBarrier {enum VkStructureType sType;const void*pNext;unsigned int srcAccessMask;unsigned int dstAccessMask;unsigned int srcQueueFamilyIndex;unsigned int dstQueueFamilyIndex;struct VkBuffer_T*buffer;unsigned long offset;unsigned long size;};
struct VkImageMemoryBarrier {enum VkStructureType sType;const void*pNext;unsigned int srcAccessMask;unsigned int dstAccessMask;enum VkImageLayout oldLayout;enum VkImageLayout newLayout;unsigned int srcQueueFamilyIndex;unsigned int dstQueueFamilyIndex;struct VkImage_T*image;struct VkImageSubresourceRange subresourceRange;};
struct VkRenderPassBeginInfo {enum VkStructureType sType;const void*pNext;struct VkRenderPass_T*renderPass;struct VkFramebuffer_T*framebuffer;struct VkRect2D renderArea;unsigned int clearValueCount;const union VkClearValue*pClearValues;};
struct VkSamplerYcbcrConversion_T {};
struct VkDescriptorUpdateTemplate_T {};
struct VkBindBufferMemoryInfo {enum VkStructureType sType;const void*pNext;struct VkBuffer_T*buffer;struct VkDeviceMemory_T*memory;unsigned long memoryOffset;};
struct VkBindImageMemoryInfo {enum VkStructureType sType;const void*pNext;struct VkImage_T*image;struct VkDeviceMemory_T*memory;unsigned long memoryOffset;};
struct VkPhysicalDeviceGroupProperties {enum VkStructureType sType;void*pNext;unsigned int physicalDeviceCount;struct VkPhysicalDevice_T*physicalDevices[32];unsigned int subsetAllocation;};
struct VkBufferMemoryRequirementsInfo2 {enum VkStructureType sType;const void*pNext;struct VkBuffer_T*buffer;};
struct VkImageMemoryRequirementsInfo2 {enum VkStructureType sType;const void*pNext;struct VkImage_T*image;};
struct VkImageSparseMemoryRequirementsInfo2 {enum VkStructureType sType;const void*pNext;struct VkImage_T*image;};
struct VkMemoryRequirements2 {enum VkStructureType sType;void*pNext;struct VkMemoryRequirements memoryRequirements;};
struct VkSparseImageMemoryRequirements2 {enum VkStructureType sType;void*pNext;struct VkSparseImageMemoryRequirements memoryRequirements;};
struct VkPhysicalDeviceFeatures2 {enum VkStructureType sType;void*pNext;struct VkPhysicalDeviceFeatures features;};
struct VkPhysicalDeviceProperties2 {enum VkStructureType sType;void*pNext;struct VkPhysicalDeviceProperties properties;};
struct VkFormatProperties2 {enum VkStructureType sType;void*pNext;struct VkFormatProperties formatProperties;};
struct VkImageFormatProperties2 {enum VkStructureType sType;void*pNext;struct VkImageFormatProperties imageFormatProperties;};
struct VkPhysicalDeviceImageFormatInfo2 {enum VkStructureType sType;const void*pNext;enum VkFormat format;enum VkImageType type;enum VkImageTiling tiling;unsigned int usage;unsigned int flags;};
struct VkQueueFamilyProperties2 {enum VkStructureType sType;void*pNext;struct VkQueueFamilyProperties queueFamilyProperties;};
struct VkPhysicalDeviceMemoryProperties2 {enum VkStructureType sType;void*pNext;struct VkPhysicalDeviceMemoryProperties memoryProperties;};
struct VkSparseImageFormatProperties2 {enum VkStructureType sType;void*pNext;struct VkSparseImageFormatProperties properties;};
struct VkPhysicalDeviceSparseImageFormatInfo2 {enum VkStructureType sType;const void*pNext;enum VkFormat format;enum VkImageType type;enum VkSampleCountFlagBits samples;unsigned int usage;enum VkImageTiling tiling;};
struct VkDeviceQueueInfo2 {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int queueFamilyIndex;unsigned int queueIndex;};
struct VkSamplerYcbcrConversionCreateInfo {enum VkStructureType sType;const void*pNext;enum VkFormat format;enum VkSamplerYcbcrModelConversion ycbcrModel;enum VkSamplerYcbcrRange ycbcrRange;struct VkComponentMapping components;enum VkChromaLocation xChromaOffset;enum VkChromaLocation yChromaOffset;enum VkFilter chromaFilter;unsigned int forceExplicitReconstruction;};
struct VkDescriptorUpdateTemplateEntry {unsigned int dstBinding;unsigned int dstArrayElement;unsigned int descriptorCount;enum VkDescriptorType descriptorType;unsigned long offset;unsigned long stride;};
struct VkDescriptorUpdateTemplateCreateInfo {enum VkStructureType sType;void*pNext;unsigned int flags;unsigned int descriptorUpdateEntryCount;const struct VkDescriptorUpdateTemplateEntry*pDescriptorUpdateEntries;enum VkDescriptorUpdateTemplateType templateType;struct VkDescriptorSetLayout_T*descriptorSetLayout;enum VkPipelineBindPoint pipelineBindPoint;struct VkPipelineLayout_T*pipelineLayout;unsigned int set;};
struct VkExternalMemoryProperties {unsigned int externalMemoryFeatures;unsigned int exportFromImportedHandleTypes;unsigned int compatibleHandleTypes;};
struct VkPhysicalDeviceExternalBufferInfo {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int usage;enum VkExternalMemoryHandleTypeFlagBits handleType;};
struct VkExternalBufferProperties {enum VkStructureType sType;void*pNext;struct VkExternalMemoryProperties externalMemoryProperties;};
struct VkPhysicalDeviceExternalFenceInfo {enum VkStructureType sType;const void*pNext;enum VkExternalFenceHandleTypeFlagBits handleType;};
struct VkExternalFenceProperties {enum VkStructureType sType;void*pNext;unsigned int exportFromImportedHandleTypes;unsigned int compatibleHandleTypes;unsigned int externalFenceFeatures;};
struct VkPhysicalDeviceExternalSemaphoreInfo {enum VkStructureType sType;const void*pNext;enum VkExternalSemaphoreHandleTypeFlagBits handleType;};
struct VkExternalSemaphoreProperties {enum VkStructureType sType;void*pNext;unsigned int exportFromImportedHandleTypes;unsigned int compatibleHandleTypes;unsigned int externalSemaphoreFeatures;};
struct VkDescriptorSetLayoutSupport {enum VkStructureType sType;void*pNext;unsigned int supported;};
struct VkSurfaceKHR_T {};
struct VkSurfaceCapabilitiesKHR {unsigned int minImageCount;unsigned int maxImageCount;struct VkExtent2D currentExtent;struct VkExtent2D minImageExtent;struct VkExtent2D maxImageExtent;unsigned int maxImageArrayLayers;unsigned int supportedTransforms;enum VkSurfaceTransformFlagBitsKHR currentTransform;unsigned int supportedCompositeAlpha;unsigned int supportedUsageFlags;};
struct VkSurfaceFormatKHR {enum VkFormat format;enum VkColorSpaceKHR colorSpace;};
struct VkSwapchainKHR_T {};
struct VkSwapchainCreateInfoKHR {enum VkStructureType sType;const void*pNext;unsigned int flags;struct VkSurfaceKHR_T*surface;unsigned int minImageCount;enum VkFormat imageFormat;enum VkColorSpaceKHR imageColorSpace;struct VkExtent2D imageExtent;unsigned int imageArrayLayers;unsigned int imageUsage;enum VkSharingMode imageSharingMode;unsigned int queueFamilyIndexCount;const unsigned int*pQueueFamilyIndices;enum VkSurfaceTransformFlagBitsKHR preTransform;enum VkCompositeAlphaFlagBitsKHR compositeAlpha;enum VkPresentModeKHR presentMode;unsigned int clipped;struct VkSwapchainKHR_T*oldSwapchain;};
struct VkPresentInfoKHR {enum VkStructureType sType;const void*pNext;unsigned int waitSemaphoreCount;struct VkSemaphore_T*const*pWaitSemaphores;unsigned int swapchainCount;struct VkSwapchainKHR_T*const*pSwapchains;const unsigned int*pImageIndices;enum VkResult*pResults;};
struct VkAcquireNextImageInfoKHR {enum VkStructureType sType;const void*pNext;struct VkSwapchainKHR_T*swapchain;unsigned long timeout;struct VkSemaphore_T*semaphore;struct VkFence_T*fence;unsigned int deviceMask;};
struct VkDeviceGroupPresentCapabilitiesKHR {enum VkStructureType sType;const void*pNext;unsigned int presentMask[32];unsigned int modes;};
struct VkDisplayKHR_T {};
struct VkDisplayModeKHR_T {};
struct VkDisplayPropertiesKHR {struct VkDisplayKHR_T*display;const char*displayName;struct VkExtent2D physicalDimensions;struct VkExtent2D physicalResolution;unsigned int supportedTransforms;unsigned int planeReorderPossible;unsigned int persistentContent;};
struct VkDisplayModeParametersKHR {struct VkExtent2D visibleRegion;unsigned int refreshRate;};
struct VkDisplayModePropertiesKHR {struct VkDisplayModeKHR_T*displayMode;struct VkDisplayModeParametersKHR parameters;};
struct VkDisplayModeCreateInfoKHR {enum VkStructureType sType;const void*pNext;unsigned int flags;struct VkDisplayModeParametersKHR parameters;};
struct VkDisplayPlaneCapabilitiesKHR {unsigned int supportedAlpha;struct VkOffset2D minSrcPosition;struct VkOffset2D maxSrcPosition;struct VkExtent2D minSrcExtent;struct VkExtent2D maxSrcExtent;struct VkOffset2D minDstPosition;struct VkOffset2D maxDstPosition;struct VkExtent2D minDstExtent;struct VkExtent2D maxDstExtent;};
struct VkDisplayPlanePropertiesKHR {struct VkDisplayKHR_T*currentDisplay;unsigned int currentStackIndex;};
struct VkDisplaySurfaceCreateInfoKHR {enum VkStructureType sType;const void*pNext;unsigned int flags;struct VkDisplayModeKHR_T*displayMode;unsigned int planeIndex;unsigned int planeStackIndex;enum VkSurfaceTransformFlagBitsKHR transform;float globalAlpha;enum VkDisplayPlaneAlphaFlagBitsKHR alphaMode;struct VkExtent2D imageExtent;};
struct VkMemoryFdPropertiesKHR {enum VkStructureType sType;void*pNext;unsigned int memoryTypeBits;};
struct VkMemoryGetFdInfoKHR {enum VkStructureType sType;const void*pNext;struct VkDeviceMemory_T*memory;enum VkExternalMemoryHandleTypeFlagBits handleType;};
struct VkImportSemaphoreFdInfoKHR {enum VkStructureType sType;const void*pNext;struct VkSemaphore_T*semaphore;unsigned int flags;enum VkExternalSemaphoreHandleTypeFlagBits handleType;int fd;};
struct VkSemaphoreGetFdInfoKHR {enum VkStructureType sType;const void*pNext;struct VkSemaphore_T*semaphore;enum VkExternalSemaphoreHandleTypeFlagBits handleType;};
struct VkImportFenceFdInfoKHR {enum VkStructureType sType;const void*pNext;struct VkFence_T*fence;unsigned int flags;enum VkExternalFenceHandleTypeFlagBits handleType;int fd;};
struct VkFenceGetFdInfoKHR {enum VkStructureType sType;const void*pNext;struct VkFence_T*fence;enum VkExternalFenceHandleTypeFlagBits handleType;};
struct VkPhysicalDeviceSurfaceInfo2KHR {enum VkStructureType sType;const void*pNext;struct VkSurfaceKHR_T*surface;};
struct VkSurfaceCapabilities2KHR {enum VkStructureType sType;void*pNext;struct VkSurfaceCapabilitiesKHR surfaceCapabilities;};
struct VkSurfaceFormat2KHR {enum VkStructureType sType;void*pNext;struct VkSurfaceFormatKHR surfaceFormat;};
struct VkDebugReportCallbackEXT_T {};
struct VkDebugReportCallbackCreateInfoEXT {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int(*pfnCallback)(unsigned int,enum VkDebugReportObjectTypeEXT,unsigned long,unsigned long,int,const char*,const char*,void*);void*pUserData;};
struct VkDebugMarkerObjectNameInfoEXT {enum VkStructureType sType;const void*pNext;enum VkDebugReportObjectTypeEXT objectType;unsigned long object;const char*pObjectName;};
struct VkDebugMarkerObjectTagInfoEXT {enum VkStructureType sType;const void*pNext;enum VkDebugReportObjectTypeEXT objectType;unsigned long object;unsigned long tagName;unsigned long tagSize;const void*pTag;};
struct VkDebugMarkerMarkerInfoEXT {enum VkStructureType sType;const void*pNext;const char*pMarkerName;float color[4];};
struct VkExternalImageFormatPropertiesNV {struct VkImageFormatProperties imageFormatProperties;unsigned int externalMemoryFeatures;unsigned int exportFromImportedHandleTypes;unsigned int compatibleHandleTypes;};
struct VkObjectTableNVX_T {};
struct VkIndirectCommandsLayoutNVX_T {};
struct VkDeviceGeneratedCommandsFeaturesNVX {enum VkStructureType sType;const void*pNext;unsigned int computeBindingPointSupport;};
struct VkDeviceGeneratedCommandsLimitsNVX {enum VkStructureType sType;const void*pNext;unsigned int maxIndirectCommandsLayoutTokenCount;unsigned int maxObjectEntryCounts;unsigned int minSequenceCountBufferOffsetAlignment;unsigned int minSequenceIndexBufferOffsetAlignment;unsigned int minCommandsTokenBufferOffsetAlignment;};
struct VkIndirectCommandsTokenNVX {enum VkIndirectCommandsTokenTypeNVX tokenType;struct VkBuffer_T*buffer;unsigned long offset;};
struct VkIndirectCommandsLayoutTokenNVX {enum VkIndirectCommandsTokenTypeNVX tokenType;unsigned int bindingUnit;unsigned int dynamicCount;unsigned int divisor;};
struct VkIndirectCommandsLayoutCreateInfoNVX {enum VkStructureType sType;const void*pNext;enum VkPipelineBindPoint pipelineBindPoint;unsigned int flags;unsigned int tokenCount;const struct VkIndirectCommandsLayoutTokenNVX*pTokens;};
struct VkCmdProcessCommandsInfoNVX {enum VkStructureType sType;const void*pNext;struct VkObjectTableNVX_T*objectTable;struct VkIndirectCommandsLayoutNVX_T*indirectCommandsLayout;unsigned int indirectCommandsTokenCount;const struct VkIndirectCommandsTokenNVX*pIndirectCommandsTokens;unsigned int maxSequencesCount;struct VkCommandBuffer_T*targetCommandBuffer;struct VkBuffer_T*sequencesCountBuffer;unsigned long sequencesCountOffset;struct VkBuffer_T*sequencesIndexBuffer;unsigned long sequencesIndexOffset;};
struct VkCmdReserveSpaceForCommandsInfoNVX {enum VkStructureType sType;const void*pNext;struct VkObjectTableNVX_T*objectTable;struct VkIndirectCommandsLayoutNVX_T*indirectCommandsLayout;unsigned int maxSequencesCount;};
struct VkObjectTableCreateInfoNVX {enum VkStructureType sType;const void*pNext;unsigned int objectCount;const enum VkObjectEntryTypeNVX*pObjectEntryTypes;const unsigned int*pObjectEntryCounts;const unsigned int*pObjectEntryUsageFlags;unsigned int maxUniformBuffersPerDescriptor;unsigned int maxStorageBuffersPerDescriptor;unsigned int maxStorageImagesPerDescriptor;unsigned int maxSampledImagesPerDescriptor;unsigned int maxPipelineLayouts;};
struct VkObjectTableEntryNVX {enum VkObjectEntryTypeNVX type;unsigned int flags;};
struct VkViewportWScalingNV {float xcoeff;float ycoeff;};
struct VkSurfaceCapabilities2EXT {enum VkStructureType sType;void*pNext;unsigned int minImageCount;unsigned int maxImageCount;struct VkExtent2D currentExtent;struct VkExtent2D minImageExtent;struct VkExtent2D maxImageExtent;unsigned int maxImageArrayLayers;unsigned int supportedTransforms;enum VkSurfaceTransformFlagBitsKHR currentTransform;unsigned int supportedCompositeAlpha;unsigned int supportedUsageFlags;unsigned int supportedSurfaceCounters;};
struct VkDisplayPowerInfoEXT {enum VkStructureType sType;const void*pNext;enum VkDisplayPowerStateEXT powerState;};
struct VkDeviceEventInfoEXT {enum VkStructureType sType;const void*pNext;enum VkDeviceEventTypeEXT deviceEvent;};
struct VkDisplayEventInfoEXT {enum VkStructureType sType;const void*pNext;enum VkDisplayEventTypeEXT displayEvent;};
struct VkRefreshCycleDurationGOOGLE {unsigned long refreshDuration;};
struct VkPastPresentationTimingGOOGLE {unsigned int presentID;unsigned long desiredPresentTime;unsigned long actualPresentTime;unsigned long earliestPresentTime;unsigned long presentMargin;};
struct VkXYColorEXT {float x;float y;};
struct VkHdrMetadataEXT {enum VkStructureType sType;const void*pNext;struct VkXYColorEXT displayPrimaryRed;struct VkXYColorEXT displayPrimaryGreen;struct VkXYColorEXT displayPrimaryBlue;struct VkXYColorEXT whitePoint;float maxLuminance;float minLuminance;float maxContentLightLevel;float maxFrameAverageLightLevel;};
struct VkDebugUtilsMessengerEXT_T {};
struct VkDebugUtilsObjectNameInfoEXT {enum VkStructureType sType;const void*pNext;enum VkObjectType objectType;unsigned long objectHandle;const char*pObjectName;};
struct VkDebugUtilsObjectTagInfoEXT {enum VkStructureType sType;const void*pNext;enum VkObjectType objectType;unsigned long objectHandle;unsigned long tagName;unsigned long tagSize;const void*pTag;};
struct VkDebugUtilsLabelEXT {enum VkStructureType sType;const void*pNext;const char*pLabelName;float color[4];};
struct VkDebugUtilsMessengerCallbackDataEXT {enum VkStructureType sType;const void*pNext;unsigned int flags;const char*pMessageIdName;int messageIdNumber;const char*pMessage;unsigned int queueLabelCount;struct VkDebugUtilsLabelEXT*pQueueLabels;unsigned int cmdBufLabelCount;struct VkDebugUtilsLabelEXT*pCmdBufLabels;unsigned int objectCount;struct VkDebugUtilsObjectNameInfoEXT*pObjects;};
struct VkDebugUtilsMessengerCreateInfoEXT {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned int messageSeverity;unsigned int messageType;unsigned int(*pfnUserCallback)(enum VkDebugUtilsMessageSeverityFlagBitsEXT,unsigned int,const struct VkDebugUtilsMessengerCallbackDataEXT*,void*);void*pUserData;};
struct VkSampleLocationEXT {float x;float y;};
struct VkSampleLocationsInfoEXT {enum VkStructureType sType;const void*pNext;enum VkSampleCountFlagBits sampleLocationsPerPixel;struct VkExtent2D sampleLocationGridSize;unsigned int sampleLocationsCount;const struct VkSampleLocationEXT*pSampleLocations;};
struct VkMultisamplePropertiesEXT {enum VkStructureType sType;void*pNext;struct VkExtent2D maxSampleLocationGridSize;};
struct VkValidationCacheEXT_T {};
struct VkValidationCacheCreateInfoEXT {enum VkStructureType sType;const void*pNext;unsigned int flags;unsigned long initialDataSize;const void*pInitialData;};
struct VkMemoryHostPointerPropertiesEXT {enum VkStructureType sType;void*pNext;unsigned int memoryTypeBits;};
enum VkResult(vkCreateBufferView)(struct VkDevice_T*,const struct VkBufferViewCreateInfo*,const struct VkAllocationCallbacks*,struct VkBufferView_T**);
void(vkCmdCopyImageToBuffer)(struct VkCommandBuffer_T*,struct VkImage_T*,enum VkImageLayout,struct VkBuffer_T*,unsigned int,const struct VkBufferImageCopy*);
void(vkCmdResolveImage)(struct VkCommandBuffer_T*,struct VkImage_T*,enum VkImageLayout,struct VkImage_T*,enum VkImageLayout,unsigned int,const struct VkImageResolve*);
enum VkResult(vkCreateGraphicsPipelines)(struct VkDevice_T*,struct VkPipelineCache_T*,unsigned int,const struct VkGraphicsPipelineCreateInfo*,const struct VkAllocationCallbacks*,struct VkPipeline_T**);
void(vkGetPhysicalDeviceMultisamplePropertiesEXT)(struct VkPhysicalDevice_T*,enum VkSampleCountFlagBits,struct VkMultisamplePropertiesEXT*);
enum VkResult(vkGetPipelineCacheData)(struct VkDevice_T*,struct VkPipelineCache_T*,unsigned long*,void*);
void(vkDestroyObjectTableNVX)(struct VkDevice_T*,struct VkObjectTableNVX_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkEnumerateInstanceLayerProperties)(unsigned int*,struct VkLayerProperties*);
enum VkResult(vkResetEvent)(struct VkDevice_T*,struct VkEvent_T*);
enum VkResult(vkSetDebugUtilsObjectTagEXT)(struct VkDevice_T*,const struct VkDebugUtilsObjectTagInfoEXT*);
enum VkResult(vkQueueWaitIdle)(struct VkQueue_T*);
enum VkResult(vkRegisterDisplayEventEXT)(struct VkDevice_T*,struct VkDisplayKHR_T*,const struct VkDisplayEventInfoEXT*,const struct VkAllocationCallbacks*,struct VkFence_T**);
enum VkResult(vkImportFenceFdKHR)(struct VkDevice_T*,const struct VkImportFenceFdInfoKHR*);
void(vkGetPhysicalDeviceExternalSemaphoreProperties)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceExternalSemaphoreInfo*,struct VkExternalSemaphoreProperties*);
enum VkResult(vkEnumeratePhysicalDevices)(struct VkInstance_T*,unsigned int*,struct VkPhysicalDevice_T**);
void(vkGetPhysicalDeviceFormatProperties2KHR)(struct VkPhysicalDevice_T*,enum VkFormat,struct VkFormatProperties2*);
enum VkResult(vkResetFences)(struct VkDevice_T*,unsigned int,struct VkFence_T*const*);
enum VkResult(vkGetRefreshCycleDurationGOOGLE)(struct VkDevice_T*,struct VkSwapchainKHR_T*,struct VkRefreshCycleDurationGOOGLE*);
enum VkResult(vkSetDebugUtilsObjectNameEXT)(struct VkDevice_T*,const struct VkDebugUtilsObjectNameInfoEXT*);
enum VkResult(vkGetMemoryFdKHR)(struct VkDevice_T*,const struct VkMemoryGetFdInfoKHR*,int*);
enum VkResult(vkBindBufferMemory2KHR)(struct VkDevice_T*,unsigned int,const struct VkBindBufferMemoryInfo*);
enum VkResult(vkCreateFramebuffer)(struct VkDevice_T*,const struct VkFramebufferCreateInfo*,const struct VkAllocationCallbacks*,struct VkFramebuffer_T**);
void(vkCmdResetEvent)(struct VkCommandBuffer_T*,struct VkEvent_T*,unsigned int);
enum VkResult(vkBindBufferMemory)(struct VkDevice_T*,struct VkBuffer_T*,struct VkDeviceMemory_T*,unsigned long);
void(vkGetPhysicalDeviceProperties2)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceProperties2*);
enum VkResult(vkEndCommandBuffer)(struct VkCommandBuffer_T*);
void(vkGetPhysicalDeviceProperties)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceProperties*);
void(vkCmdDispatchIndirect)(struct VkCommandBuffer_T*,struct VkBuffer_T*,unsigned long);
void(vkCmdNextSubpass)(struct VkCommandBuffer_T*,enum VkSubpassContents);
void(vkGetDescriptorSetLayoutSupportKHR)(struct VkDevice_T*,const struct VkDescriptorSetLayoutCreateInfo*,struct VkDescriptorSetLayoutSupport*);
void(vkCmdCopyBuffer)(struct VkCommandBuffer_T*,struct VkBuffer_T*,struct VkBuffer_T*,unsigned int,const struct VkBufferCopy*);
enum VkResult(vkRegisterObjectsNVX)(struct VkDevice_T*,struct VkObjectTableNVX_T*,unsigned int,const struct VkObjectTableEntryNVX*const*,const unsigned int*);
void(vkCmdDrawIndirectCountAMD)(struct VkCommandBuffer_T*,struct VkBuffer_T*,unsigned long,struct VkBuffer_T*,unsigned long,unsigned int,unsigned int);
enum VkResult(vkGetDisplayPlaneSupportedDisplaysKHR)(struct VkPhysicalDevice_T*,unsigned int,unsigned int*,struct VkDisplayKHR_T**);
enum VkResult(vkCreateValidationCacheEXT)(struct VkDevice_T*,const struct VkValidationCacheCreateInfoEXT*,const struct VkAllocationCallbacks*,struct VkValidationCacheEXT_T**);
enum VkResult(vkGetSwapchainStatusKHR)(struct VkDevice_T*,struct VkSwapchainKHR_T*);
enum VkResult(vkCreateDebugUtilsMessengerEXT)(struct VkInstance_T*,const struct VkDebugUtilsMessengerCreateInfoEXT*,const struct VkAllocationCallbacks*,struct VkDebugUtilsMessengerEXT_T**);
enum VkResult(vkCreateComputePipelines)(struct VkDevice_T*,struct VkPipelineCache_T*,unsigned int,const struct VkComputePipelineCreateInfo*,const struct VkAllocationCallbacks*,struct VkPipeline_T**);
void(vkDestroyIndirectCommandsLayoutNVX)(struct VkDevice_T*,struct VkIndirectCommandsLayoutNVX_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkCreateDescriptorSetLayout)(struct VkDevice_T*,const struct VkDescriptorSetLayoutCreateInfo*,const struct VkAllocationCallbacks*,struct VkDescriptorSetLayout_T**);
void(vkDestroyQueryPool)(struct VkDevice_T*,struct VkQueryPool_T*,const struct VkAllocationCallbacks*);
void(vkGetPhysicalDeviceMemoryProperties2KHR)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceMemoryProperties2*);
void(vkCmdUpdateBuffer)(struct VkCommandBuffer_T*,struct VkBuffer_T*,unsigned long,unsigned long,const void*);
void(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceExternalSemaphoreInfo*,struct VkExternalSemaphoreProperties*);
void(vkCmdSetStencilReference)(struct VkCommandBuffer_T*,unsigned int,unsigned int);
void(vkCmdDebugMarkerEndEXT)(struct VkCommandBuffer_T*);
enum VkResult(vkCreateQueryPool)(struct VkDevice_T*,const struct VkQueryPoolCreateInfo*,const struct VkAllocationCallbacks*,struct VkQueryPool_T**);
void(vkDestroyDebugReportCallbackEXT)(struct VkInstance_T*,struct VkDebugReportCallbackEXT_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkGetFenceStatus)(struct VkDevice_T*,struct VkFence_T*);
void(vkGetImageSparseMemoryRequirements2KHR)(struct VkDevice_T*,const struct VkImageSparseMemoryRequirementsInfo2*,unsigned int*,struct VkSparseImageMemoryRequirements2*);
void(vkCmdBeginQuery)(struct VkCommandBuffer_T*,struct VkQueryPool_T*,unsigned int,unsigned int);
void(vkCmdProcessCommandsNVX)(struct VkCommandBuffer_T*,const struct VkCmdProcessCommandsInfoNVX*);
void(vkGetPhysicalDeviceFeatures2KHR)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceFeatures2*);
enum VkResult(vkQueueSubmit)(struct VkQueue_T*,unsigned int,const struct VkSubmitInfo*,struct VkFence_T*);
void(vkCmdBlitImage)(struct VkCommandBuffer_T*,struct VkImage_T*,enum VkImageLayout,struct VkImage_T*,enum VkImageLayout,unsigned int,const struct VkImageBlit*,enum VkFilter);
void(vkGetPhysicalDeviceExternalBufferPropertiesKHR)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceExternalBufferInfo*,struct VkExternalBufferProperties*);
void(vkCmdSetDepthBias)(struct VkCommandBuffer_T*,float,float,float);
void(vkCmdSetSampleLocationsEXT)(struct VkCommandBuffer_T*,const struct VkSampleLocationsInfoEXT*);
void(vkGetPhysicalDeviceExternalFencePropertiesKHR)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceExternalFenceInfo*,struct VkExternalFenceProperties*);
enum VkResult(vkCreateObjectTableNVX)(struct VkDevice_T*,const struct VkObjectTableCreateInfoNVX*,const struct VkAllocationCallbacks*,struct VkObjectTableNVX_T**);
enum VkResult(vkGetPastPresentationTimingGOOGLE)(struct VkDevice_T*,struct VkSwapchainKHR_T*,unsigned int*,struct VkPastPresentationTimingGOOGLE*);
enum VkResult(vkGetPhysicalDeviceImageFormatProperties)(struct VkPhysicalDevice_T*,enum VkFormat,enum VkImageType,enum VkImageTiling,unsigned int,unsigned int,struct VkImageFormatProperties*);
void(vkCmdPushConstants)(struct VkCommandBuffer_T*,struct VkPipelineLayout_T*,unsigned int,unsigned int,unsigned int,const void*);
void(vkCmdCopyBufferToImage)(struct VkCommandBuffer_T*,struct VkBuffer_T*,struct VkImage_T*,enum VkImageLayout,unsigned int,const struct VkBufferImageCopy*);
void(vkCmdBindVertexBuffers)(struct VkCommandBuffer_T*,unsigned int,unsigned int,struct VkBuffer_T*const*,const unsigned long*);
void(vkGetPhysicalDeviceFormatProperties2)(struct VkPhysicalDevice_T*,enum VkFormat,struct VkFormatProperties2*);
void(vkDestroyCommandPool)(struct VkDevice_T*,struct VkCommandPool_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkCreateSampler)(struct VkDevice_T*,const struct VkSamplerCreateInfo*,const struct VkAllocationCallbacks*,struct VkSampler_T**);
enum VkResult(vkGetDisplayPlaneCapabilitiesKHR)(struct VkPhysicalDevice_T*,struct VkDisplayModeKHR_T*,unsigned int,struct VkDisplayPlaneCapabilitiesKHR*);
void(vkCmdSetBlendConstants)(struct VkCommandBuffer_T*,const float);
void(vkGetImageSparseMemoryRequirements)(struct VkDevice_T*,struct VkImage_T*,unsigned int*,struct VkSparseImageMemoryRequirements*);
void(vkDestroyImageView)(struct VkDevice_T*,struct VkImageView_T*,const struct VkAllocationCallbacks*);
void(vkQueueEndDebugUtilsLabelEXT)(struct VkQueue_T*);
enum VkResult(vkGetEventStatus)(struct VkDevice_T*,struct VkEvent_T*);
void(vkCmdSetDeviceMaskKHR)(struct VkCommandBuffer_T*,unsigned int);
void(vkCmdDebugMarkerInsertEXT)(struct VkCommandBuffer_T*,const struct VkDebugMarkerMarkerInfoEXT*);
void(vkCmdFillBuffer)(struct VkCommandBuffer_T*,struct VkBuffer_T*,unsigned long,unsigned long,unsigned int);
void(vkCmdReserveSpaceForCommandsNVX)(struct VkCommandBuffer_T*,const struct VkCmdReserveSpaceForCommandsInfoNVX*);
void(vkGetPhysicalDeviceSparseImageFormatProperties2)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceSparseImageFormatInfo2*,unsigned int*,struct VkSparseImageFormatProperties2*);
enum VkResult(vkCreateImage)(struct VkDevice_T*,const struct VkImageCreateInfo*,const struct VkAllocationCallbacks*,struct VkImage_T**);
enum VkResult(vkGetDisplayModePropertiesKHR)(struct VkPhysicalDevice_T*,struct VkDisplayKHR_T*,unsigned int*,struct VkDisplayModePropertiesKHR*);
enum VkResult(vkAllocateMemory)(struct VkDevice_T*,const struct VkMemoryAllocateInfo*,const struct VkAllocationCallbacks*,struct VkDeviceMemory_T**);
void(vkCmdClearColorImage)(struct VkCommandBuffer_T*,struct VkImage_T*,enum VkImageLayout,const union VkClearColorValue*,unsigned int,const struct VkImageSubresourceRange*);
enum VkResult(vkCreateDisplayModeKHR)(struct VkPhysicalDevice_T*,struct VkDisplayKHR_T*,const struct VkDisplayModeCreateInfoKHR*,const struct VkAllocationCallbacks*,struct VkDisplayModeKHR_T**);
void(vkCmdBeginDebugUtilsLabelEXT)(struct VkCommandBuffer_T*,const struct VkDebugUtilsLabelEXT*);
void(vkCmdDebugMarkerBeginEXT)(struct VkCommandBuffer_T*,const struct VkDebugMarkerMarkerInfoEXT*);
enum VkResult(vkDebugMarkerSetObjectNameEXT)(struct VkDevice_T*,const struct VkDebugMarkerObjectNameInfoEXT*);
void(vkDestroyImage)(struct VkDevice_T*,struct VkImage_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkGetFenceFdKHR)(struct VkDevice_T*,const struct VkFenceGetFdInfoKHR*,int*);
enum VkResult(vkCreateDescriptorUpdateTemplateKHR)(struct VkDevice_T*,const struct VkDescriptorUpdateTemplateCreateInfo*,const struct VkAllocationCallbacks*,struct VkDescriptorUpdateTemplate_T**);
enum VkResult(vkDebugMarkerSetObjectTagEXT)(struct VkDevice_T*,const struct VkDebugMarkerObjectTagInfoEXT*);
void(vkCmdDispatch)(struct VkCommandBuffer_T*,unsigned int,unsigned int,unsigned int);
enum VkResult(vkResetDescriptorPool)(struct VkDevice_T*,struct VkDescriptorPool_T*,unsigned int);
void(vkCmdPushDescriptorSetKHR)(struct VkCommandBuffer_T*,enum VkPipelineBindPoint,struct VkPipelineLayout_T*,unsigned int,unsigned int,const struct VkWriteDescriptorSet*);
void(vkUpdateDescriptorSetWithTemplateKHR)(struct VkDevice_T*,struct VkDescriptorSet_T*,struct VkDescriptorUpdateTemplate_T*,const void*);
void(vkDestroyDevice)(struct VkDevice_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkBindImageMemory)(struct VkDevice_T*,struct VkImage_T*,struct VkDeviceMemory_T*,unsigned long);
enum VkResult(vkCreateCommandPool)(struct VkDevice_T*,const struct VkCommandPoolCreateInfo*,const struct VkAllocationCallbacks*,struct VkCommandPool_T**);
enum VkResult(vkCreateIndirectCommandsLayoutNVX)(struct VkDevice_T*,const struct VkIndirectCommandsLayoutCreateInfoNVX*,const struct VkAllocationCallbacks*,struct VkIndirectCommandsLayoutNVX_T**);
enum VkResult(vkCreatePipelineLayout)(struct VkDevice_T*,const struct VkPipelineLayoutCreateInfo*,const struct VkAllocationCallbacks*,struct VkPipelineLayout_T**);
enum VkResult(vkEnumerateInstanceVersion)(unsigned int*);
enum VkResult(vkResetCommandPool)(struct VkDevice_T*,struct VkCommandPool_T*,unsigned int);
void(vkGetBufferMemoryRequirements)(struct VkDevice_T*,struct VkBuffer_T*,struct VkMemoryRequirements*);
enum VkResult(vkDeviceWaitIdle)(struct VkDevice_T*);
enum VkResult(vkBindImageMemory2KHR)(struct VkDevice_T*,unsigned int,const struct VkBindImageMemoryInfo*);
void(vkGetDeviceGroupPeerMemoryFeaturesKHR)(struct VkDevice_T*,unsigned int,unsigned int,unsigned int,unsigned int*);
void(vkCmdSetStencilCompareMask)(struct VkCommandBuffer_T*,unsigned int,unsigned int);
void(vkDestroySamplerYcbcrConversionKHR)(struct VkDevice_T*,struct VkSamplerYcbcrConversion_T*,const struct VkAllocationCallbacks*);
void(vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(struct VkPhysicalDevice_T*,struct VkDeviceGeneratedCommandsFeaturesNVX*,struct VkDeviceGeneratedCommandsLimitsNVX*);
void(vkGetRenderAreaGranularity)(struct VkDevice_T*,struct VkRenderPass_T*,struct VkExtent2D*);
void(vkDestroyInstance)(struct VkInstance_T*,const struct VkAllocationCallbacks*);
void(vkGetDeviceQueue2)(struct VkDevice_T*,const struct VkDeviceQueueInfo2*,struct VkQueue_T**);
enum VkResult(vkCreateSamplerYcbcrConversion)(struct VkDevice_T*,const struct VkSamplerYcbcrConversionCreateInfo*,const struct VkAllocationCallbacks*,struct VkSamplerYcbcrConversion_T**);
void(vkGetPhysicalDeviceQueueFamilyProperties)(struct VkPhysicalDevice_T*,unsigned int*,struct VkQueueFamilyProperties*);
void(vkQueueInsertDebugUtilsLabelEXT)(struct VkQueue_T*,const struct VkDebugUtilsLabelEXT*);
void(vkCmdSetDeviceMask)(struct VkCommandBuffer_T*,unsigned int);
void(vkGetBufferMemoryRequirements2)(struct VkDevice_T*,const struct VkBufferMemoryRequirementsInfo2*,struct VkMemoryRequirements2*);
enum VkResult(vkGetPhysicalDeviceSurfaceCapabilities2EXT)(struct VkPhysicalDevice_T*,struct VkSurfaceKHR_T*,struct VkSurfaceCapabilities2EXT*);
void(vkGetPhysicalDeviceMemoryProperties2)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceMemoryProperties2*);
void(vkCmdWriteTimestamp)(struct VkCommandBuffer_T*,enum VkPipelineStageFlagBits,struct VkQueryPool_T*,unsigned int);
enum VkResult(vkGetPhysicalDeviceImageFormatProperties2KHR)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceImageFormatInfo2*,struct VkImageFormatProperties2*);
void(vkCmdSetViewportWScalingNV)(struct VkCommandBuffer_T*,unsigned int,unsigned int,const struct VkViewportWScalingNV*);
enum VkResult(vkCreateShaderModule)(struct VkDevice_T*,const struct VkShaderModuleCreateInfo*,const struct VkAllocationCallbacks*,struct VkShaderModule_T**);
void(vkDestroySurfaceKHR)(struct VkInstance_T*,struct VkSurfaceKHR_T*,const struct VkAllocationCallbacks*);
void(vkCmdCopyQueryPoolResults)(struct VkCommandBuffer_T*,struct VkQueryPool_T*,unsigned int,unsigned int,struct VkBuffer_T*,unsigned long,unsigned long,unsigned int);
enum VkResult(vkGetSwapchainCounterEXT)(struct VkDevice_T*,struct VkSwapchainKHR_T*,enum VkSurfaceCounterFlagBitsEXT,unsigned long*);
enum VkResult(vkMergePipelineCaches)(struct VkDevice_T*,struct VkPipelineCache_T*,unsigned int,struct VkPipelineCache_T*const*);
void(vkGetDeviceGroupPeerMemoryFeatures)(struct VkDevice_T*,unsigned int,unsigned int,unsigned int,unsigned int*);
void(vkGetPhysicalDeviceQueueFamilyProperties2KHR)(struct VkPhysicalDevice_T*,unsigned int*,struct VkQueueFamilyProperties2*);
void(vkCmdSetStencilWriteMask)(struct VkCommandBuffer_T*,unsigned int,unsigned int);
void(vkDestroyDescriptorUpdateTemplateKHR)(struct VkDevice_T*,struct VkDescriptorUpdateTemplate_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkImportSemaphoreFdKHR)(struct VkDevice_T*,const struct VkImportSemaphoreFdInfoKHR*);
void(vkCmdBindDescriptorSets)(struct VkCommandBuffer_T*,enum VkPipelineBindPoint,struct VkPipelineLayout_T*,unsigned int,unsigned int,struct VkDescriptorSet_T*const*,unsigned int,const unsigned int*);
enum VkResult(vkEnumerateInstanceExtensionProperties)(const char*,unsigned int*,struct VkExtensionProperties*);
void(vkCmdDispatchBase)(struct VkCommandBuffer_T*,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int);
void(vkCmdSetDepthBounds)(struct VkCommandBuffer_T*,float,float);
enum VkResult(vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(struct VkPhysicalDevice_T*,enum VkFormat,enum VkImageType,enum VkImageTiling,unsigned int,unsigned int,unsigned int,struct VkExternalImageFormatPropertiesNV*);
void(vkDestroyEvent)(struct VkDevice_T*,struct VkEvent_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkBindBufferMemory2)(struct VkDevice_T*,unsigned int,const struct VkBindBufferMemoryInfo*);
void(vkGetPhysicalDeviceProperties2KHR)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceProperties2*);
void(vkDestroyBuffer)(struct VkDevice_T*,struct VkBuffer_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkCreateEvent)(struct VkDevice_T*,const struct VkEventCreateInfo*,const struct VkAllocationCallbacks*,struct VkEvent_T**);
void(vkGetPhysicalDeviceSparseImageFormatProperties)(struct VkPhysicalDevice_T*,enum VkFormat,enum VkImageType,enum VkSampleCountFlagBits,unsigned int,enum VkImageTiling,unsigned int*,struct VkSparseImageFormatProperties*);
enum VkResult(vkGetPhysicalDeviceSurfaceFormats2KHR)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceSurfaceInfo2KHR*,unsigned int*,struct VkSurfaceFormat2KHR*);
void(vkDestroyDebugUtilsMessengerEXT)(struct VkInstance_T*,struct VkDebugUtilsMessengerEXT_T*,const struct VkAllocationCallbacks*);
void(vkSubmitDebugUtilsMessageEXT)(struct VkInstance_T*,enum VkDebugUtilsMessageSeverityFlagBitsEXT,unsigned int,const struct VkDebugUtilsMessengerCallbackDataEXT*);
enum VkResult(vkAllocateCommandBuffers)(struct VkDevice_T*,const struct VkCommandBufferAllocateInfo*,struct VkCommandBuffer_T**);
enum VkResult(vkGetPhysicalDeviceSurfaceFormatsKHR)(struct VkPhysicalDevice_T*,struct VkSurfaceKHR_T*,unsigned int*,struct VkSurfaceFormatKHR*);
enum VkResult(vkCreateDescriptorPool)(struct VkDevice_T*,const struct VkDescriptorPoolCreateInfo*,const struct VkAllocationCallbacks*,struct VkDescriptorPool_T**);
void(vkGetImageSubresourceLayout)(struct VkDevice_T*,struct VkImage_T*,const struct VkImageSubresource*,struct VkSubresourceLayout*);
void(vkGetPhysicalDeviceExternalFenceProperties)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceExternalFenceInfo*,struct VkExternalFenceProperties*);
void(vkTrimCommandPool)(struct VkDevice_T*,struct VkCommandPool_T*,unsigned int);
void(vkFreeCommandBuffers)(struct VkDevice_T*,struct VkCommandPool_T*,unsigned int,struct VkCommandBuffer_T*const*);
void(vkGetPhysicalDeviceExternalBufferProperties)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceExternalBufferInfo*,struct VkExternalBufferProperties*);
enum VkResult(vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(struct VkPhysicalDevice_T*,struct VkSurfaceKHR_T*,struct VkSurfaceCapabilitiesKHR*);
void(vkDestroyPipeline)(struct VkDevice_T*,struct VkPipeline_T*,const struct VkAllocationCallbacks*);
void(vkCmdDrawIndexedIndirect)(struct VkCommandBuffer_T*,struct VkBuffer_T*,unsigned long,unsigned int,unsigned int);
void(vkTrimCommandPoolKHR)(struct VkDevice_T*,struct VkCommandPool_T*,unsigned int);
enum VkResult(vkGetPhysicalDeviceSurfaceSupportKHR)(struct VkPhysicalDevice_T*,unsigned int,struct VkSurfaceKHR_T*,unsigned int*);
enum VkResult(vkCreateSemaphore)(struct VkDevice_T*,const struct VkSemaphoreCreateInfo*,const struct VkAllocationCallbacks*,struct VkSemaphore_T**);
void(vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceSparseImageFormatInfo2*,unsigned int*,struct VkSparseImageFormatProperties2*);
void(vkDestroyShaderModule)(struct VkDevice_T*,struct VkShaderModule_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkCreatePipelineCache)(struct VkDevice_T*,const struct VkPipelineCacheCreateInfo*,const struct VkAllocationCallbacks*,struct VkPipelineCache_T**);
void(vkGetPhysicalDeviceFeatures)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceFeatures*);
void(vkDestroyPipelineLayout)(struct VkDevice_T*,struct VkPipelineLayout_T*,const struct VkAllocationCallbacks*);
void(vkDestroySampler)(struct VkDevice_T*,struct VkSampler_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkCreateDebugReportCallbackEXT)(struct VkInstance_T*,const struct VkDebugReportCallbackCreateInfoEXT*,const struct VkAllocationCallbacks*,struct VkDebugReportCallbackEXT_T**);
enum VkResult(vkGetPhysicalDevicePresentRectanglesKHR)(struct VkPhysicalDevice_T*,struct VkSurfaceKHR_T*,unsigned int*,struct VkRect2D*);
enum VkResult(vkMapMemory)(struct VkDevice_T*,struct VkDeviceMemory_T*,unsigned long,unsigned long,unsigned int,void**);
void(vkDestroyFramebuffer)(struct VkDevice_T*,struct VkFramebuffer_T*,const struct VkAllocationCallbacks*);
void(vkGetDeviceMemoryCommitment)(struct VkDevice_T*,struct VkDeviceMemory_T*,unsigned long*);
void(vkCmdWriteBufferMarkerAMD)(struct VkCommandBuffer_T*,enum VkPipelineStageFlagBits,struct VkBuffer_T*,unsigned long,unsigned int);
enum VkResult(vkGetMemoryHostPointerPropertiesEXT)(struct VkDevice_T*,enum VkExternalMemoryHandleTypeFlagBits,const void*,struct VkMemoryHostPointerPropertiesEXT*);
void(vkCmdPushDescriptorSetWithTemplateKHR)(struct VkCommandBuffer_T*,struct VkDescriptorUpdateTemplate_T*,struct VkPipelineLayout_T*,unsigned int,const void*);
enum VkResult(vkGetValidationCacheDataEXT)(struct VkDevice_T*,struct VkValidationCacheEXT_T*,unsigned long*,void*);
enum VkResult(vkCreateSamplerYcbcrConversionKHR)(struct VkDevice_T*,const struct VkSamplerYcbcrConversionCreateInfo*,const struct VkAllocationCallbacks*,struct VkSamplerYcbcrConversion_T**);
void(vkCmdBindIndexBuffer)(struct VkCommandBuffer_T*,struct VkBuffer_T*,unsigned long,enum VkIndexType);
void(vkDestroyValidationCacheEXT)(struct VkDevice_T*,struct VkValidationCacheEXT_T*,const struct VkAllocationCallbacks*);
void(vkCmdInsertDebugUtilsLabelEXT)(struct VkCommandBuffer_T*,const struct VkDebugUtilsLabelEXT*);
enum VkResult(vkGetSemaphoreFdKHR)(struct VkDevice_T*,const struct VkSemaphoreGetFdInfoKHR*,int*);
void(vkCmdEndDebugUtilsLabelEXT)(struct VkCommandBuffer_T*);
void(*vkGetDeviceProcAddr(struct VkDevice_T*,const char*))();
void(vkDestroyBufferView)(struct VkDevice_T*,struct VkBufferView_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkEnumerateDeviceLayerProperties)(struct VkPhysicalDevice_T*,unsigned int*,struct VkLayerProperties*);
enum VkResult(vkCreateDisplayPlaneSurfaceKHR)(struct VkInstance_T*,const struct VkDisplaySurfaceCreateInfoKHR*,const struct VkAllocationCallbacks*,struct VkSurfaceKHR_T**);
enum VkResult(vkResetCommandBuffer)(struct VkCommandBuffer_T*,unsigned int);
void(vkCmdDrawIndirect)(struct VkCommandBuffer_T*,struct VkBuffer_T*,unsigned long,unsigned int,unsigned int);
void(vkCmdSetViewport)(struct VkCommandBuffer_T*,unsigned int,unsigned int,const struct VkViewport*);
void(vkCmdSetEvent)(struct VkCommandBuffer_T*,struct VkEvent_T*,unsigned int);
void(vkDestroyDescriptorUpdateTemplate)(struct VkDevice_T*,struct VkDescriptorUpdateTemplate_T*,const struct VkAllocationCallbacks*);
void(vkCmdDispatchBaseKHR)(struct VkCommandBuffer_T*,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int);
void(vkCmdResetQueryPool)(struct VkCommandBuffer_T*,struct VkQueryPool_T*,unsigned int,unsigned int);
enum VkResult(vkAcquireNextImageKHR)(struct VkDevice_T*,struct VkSwapchainKHR_T*,unsigned long,struct VkSemaphore_T*,struct VkFence_T*,unsigned int*);
void(vkGetImageMemoryRequirements)(struct VkDevice_T*,struct VkImage_T*,struct VkMemoryRequirements*);
enum VkResult(vkQueueBindSparse)(struct VkQueue_T*,unsigned int,const struct VkBindSparseInfo*,struct VkFence_T*);
enum VkResult(vkSetEvent)(struct VkDevice_T*,struct VkEvent_T*);
void(vkCmdSetScissor)(struct VkCommandBuffer_T*,unsigned int,unsigned int,const struct VkRect2D*);
void(vkCmdEndQuery)(struct VkCommandBuffer_T*,struct VkQueryPool_T*,unsigned int);
void(vkGetPhysicalDeviceMemoryProperties)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceMemoryProperties*);
enum VkResult(vkCreateBuffer)(struct VkDevice_T*,const struct VkBufferCreateInfo*,const struct VkAllocationCallbacks*,struct VkBuffer_T**);
enum VkResult(vkCreateInstance)(const struct VkInstanceCreateInfo*,const struct VkAllocationCallbacks*,struct VkInstance_T**);
void(vkCmdClearDepthStencilImage)(struct VkCommandBuffer_T*,struct VkImage_T*,enum VkImageLayout,const struct VkClearDepthStencilValue*,unsigned int,const struct VkImageSubresourceRange*);
void(vkCmdDraw)(struct VkCommandBuffer_T*,unsigned int,unsigned int,unsigned int,unsigned int);
void(vkDestroySwapchainKHR)(struct VkDevice_T*,struct VkSwapchainKHR_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkGetPhysicalDeviceSurfaceCapabilities2KHR)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceSurfaceInfo2KHR*,struct VkSurfaceCapabilities2KHR*);
void(vkCmdDrawIndexed)(struct VkCommandBuffer_T*,unsigned int,unsigned int,unsigned int,int,unsigned int);
enum VkResult(vkFreeDescriptorSets)(struct VkDevice_T*,struct VkDescriptorPool_T*,unsigned int,struct VkDescriptorSet_T*const*);
void(vkGetBufferMemoryRequirements2KHR)(struct VkDevice_T*,const struct VkBufferMemoryRequirementsInfo2*,struct VkMemoryRequirements2*);
enum VkResult(vkCreateRenderPass)(struct VkDevice_T*,const struct VkRenderPassCreateInfo*,const struct VkAllocationCallbacks*,struct VkRenderPass_T**);
enum VkResult(vkCreateImageView)(struct VkDevice_T*,const struct VkImageViewCreateInfo*,const struct VkAllocationCallbacks*,struct VkImageView_T**);
void(vkGetDeviceQueue)(struct VkDevice_T*,unsigned int,unsigned int,struct VkQueue_T**);
enum VkResult(vkGetPhysicalDeviceImageFormatProperties2)(struct VkPhysicalDevice_T*,const struct VkPhysicalDeviceImageFormatInfo2*,struct VkImageFormatProperties2*);
void(vkDestroyDescriptorSetLayout)(struct VkDevice_T*,struct VkDescriptorSetLayout_T*,const struct VkAllocationCallbacks*);
void(vkCmdWaitEvents)(struct VkCommandBuffer_T*,unsigned int,struct VkEvent_T*const*,unsigned int,unsigned int,unsigned int,const struct VkMemoryBarrier*,unsigned int,const struct VkBufferMemoryBarrier*,unsigned int,const struct VkImageMemoryBarrier*);
enum VkResult(vkGetMemoryFdPropertiesKHR)(struct VkDevice_T*,enum VkExternalMemoryHandleTypeFlagBits,int,struct VkMemoryFdPropertiesKHR*);
enum VkResult(vkGetDeviceGroupPresentCapabilitiesKHR)(struct VkDevice_T*,struct VkDeviceGroupPresentCapabilitiesKHR*);
void(vkCmdEndRenderPass)(struct VkCommandBuffer_T*);
void(vkDestroyDescriptorPool)(struct VkDevice_T*,struct VkDescriptorPool_T*,const struct VkAllocationCallbacks*);
void(vkGetPhysicalDeviceFormatProperties)(struct VkPhysicalDevice_T*,enum VkFormat,struct VkFormatProperties*);
void(vkDestroyFence)(struct VkDevice_T*,struct VkFence_T*,const struct VkAllocationCallbacks*);
void(vkCmdBindPipeline)(struct VkCommandBuffer_T*,enum VkPipelineBindPoint,struct VkPipeline_T*);
enum VkResult(vkGetSwapchainImagesKHR)(struct VkDevice_T*,struct VkSwapchainKHR_T*,unsigned int*,struct VkImage_T**);
enum VkResult(vkCreateDescriptorUpdateTemplate)(struct VkDevice_T*,const struct VkDescriptorUpdateTemplateCreateInfo*,const struct VkAllocationCallbacks*,struct VkDescriptorUpdateTemplate_T**);
enum VkResult(vkCreateSwapchainKHR)(struct VkDevice_T*,const struct VkSwapchainCreateInfoKHR*,const struct VkAllocationCallbacks*,struct VkSwapchainKHR_T**);
void(vkDestroyRenderPass)(struct VkDevice_T*,struct VkRenderPass_T*,const struct VkAllocationCallbacks*);
void(vkGetDescriptorSetLayoutSupport)(struct VkDevice_T*,const struct VkDescriptorSetLayoutCreateInfo*,struct VkDescriptorSetLayoutSupport*);
void(vkQueueBeginDebugUtilsLabelEXT)(struct VkQueue_T*,const struct VkDebugUtilsLabelEXT*);
void(vkGetPhysicalDeviceFeatures2)(struct VkPhysicalDevice_T*,struct VkPhysicalDeviceFeatures2*);
enum VkResult(vkMergeValidationCachesEXT)(struct VkDevice_T*,struct VkValidationCacheEXT_T*,unsigned int,struct VkValidationCacheEXT_T*const*);
enum VkResult(vkBindImageMemory2)(struct VkDevice_T*,unsigned int,const struct VkBindImageMemoryInfo*);
void(vkCmdClearAttachments)(struct VkCommandBuffer_T*,unsigned int,const struct VkClearAttachment*,unsigned int,const struct VkClearRect*);
enum VkResult(vkCreateFence)(struct VkDevice_T*,const struct VkFenceCreateInfo*,const struct VkAllocationCallbacks*,struct VkFence_T**);
void(vkCmdExecuteCommands)(struct VkCommandBuffer_T*,unsigned int,struct VkCommandBuffer_T*const*);
enum VkResult(vkEnumeratePhysicalDeviceGroups)(struct VkInstance_T*,unsigned int*,struct VkPhysicalDeviceGroupProperties*);
void(vkCmdBeginRenderPass)(struct VkCommandBuffer_T*,const struct VkRenderPassBeginInfo*,enum VkSubpassContents);
void(vkGetImageMemoryRequirements2)(struct VkDevice_T*,const struct VkImageMemoryRequirementsInfo2*,struct VkMemoryRequirements2*);
enum VkResult(vkReleaseDisplayEXT)(struct VkPhysicalDevice_T*,struct VkDisplayKHR_T*);
void(vkGetPhysicalDeviceQueueFamilyProperties2)(struct VkPhysicalDevice_T*,unsigned int*,struct VkQueueFamilyProperties2*);
enum VkResult(vkUnregisterObjectsNVX)(struct VkDevice_T*,struct VkObjectTableNVX_T*,unsigned int,const enum VkObjectEntryTypeNVX*,const unsigned int*);
void(vkCmdDrawIndexedIndirectCountAMD)(struct VkCommandBuffer_T*,struct VkBuffer_T*,unsigned long,struct VkBuffer_T*,unsigned long,unsigned int,unsigned int);
enum VkResult(vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(struct VkPhysicalDevice_T*,unsigned int*,struct VkDisplayPlanePropertiesKHR*);
enum VkResult(vkBeginCommandBuffer)(struct VkCommandBuffer_T*,const struct VkCommandBufferBeginInfo*);
enum VkResult(vkCreateDevice)(struct VkPhysicalDevice_T*,const struct VkDeviceCreateInfo*,const struct VkAllocationCallbacks*,struct VkDevice_T**);
void(vkUpdateDescriptorSetWithTemplate)(struct VkDevice_T*,struct VkDescriptorSet_T*,struct VkDescriptorUpdateTemplate_T*,const void*);
enum VkResult(vkGetPhysicalDeviceSurfacePresentModesKHR)(struct VkPhysicalDevice_T*,struct VkSurfaceKHR_T*,unsigned int*,enum VkPresentModeKHR*);
void(*vkGetInstanceProcAddr(struct VkInstance_T*,const char*))();
void(vkUnmapMemory)(struct VkDevice_T*,struct VkDeviceMemory_T*);
void(vkGetImageMemoryRequirements2KHR)(struct VkDevice_T*,const struct VkImageMemoryRequirementsInfo2*,struct VkMemoryRequirements2*);
enum VkResult(vkEnumerateDeviceExtensionProperties)(struct VkPhysicalDevice_T*,const char*,unsigned int*,struct VkExtensionProperties*);
enum VkResult(vkQueuePresentKHR)(struct VkQueue_T*,const struct VkPresentInfoKHR*);
void(vkSetHdrMetadataEXT)(struct VkDevice_T*,unsigned int,struct VkSwapchainKHR_T*const*,const struct VkHdrMetadataEXT*);
enum VkResult(vkInvalidateMappedMemoryRanges)(struct VkDevice_T*,unsigned int,const struct VkMappedMemoryRange*);
enum VkResult(vkGetDeviceGroupSurfacePresentModesKHR)(struct VkDevice_T*,struct VkSurfaceKHR_T*,unsigned int*);
enum VkResult(vkAcquireNextImage2KHR)(struct VkDevice_T*,const struct VkAcquireNextImageInfoKHR*,unsigned int*);
enum VkResult(vkWaitForFences)(struct VkDevice_T*,unsigned int,struct VkFence_T*const*,unsigned int,unsigned long);
void(vkCmdSetLineWidth)(struct VkCommandBuffer_T*,float);
void(vkCmdSetDiscardRectangleEXT)(struct VkCommandBuffer_T*,unsigned int,unsigned int,const struct VkRect2D*);
enum VkResult(vkCreateSharedSwapchainsKHR)(struct VkDevice_T*,unsigned int,const struct VkSwapchainCreateInfoKHR*,const struct VkAllocationCallbacks*,struct VkSwapchainKHR_T**);
void(vkFreeMemory)(struct VkDevice_T*,struct VkDeviceMemory_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkFlushMappedMemoryRanges)(struct VkDevice_T*,unsigned int,const struct VkMappedMemoryRange*);
void(vkDestroySamplerYcbcrConversion)(struct VkDevice_T*,struct VkSamplerYcbcrConversion_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkEnumeratePhysicalDeviceGroupsKHR)(struct VkInstance_T*,unsigned int*,struct VkPhysicalDeviceGroupProperties*);
void(vkGetImageSparseMemoryRequirements2)(struct VkDevice_T*,const struct VkImageSparseMemoryRequirementsInfo2*,unsigned int*,struct VkSparseImageMemoryRequirements2*);
void(vkDestroyPipelineCache)(struct VkDevice_T*,struct VkPipelineCache_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkRegisterDeviceEventEXT)(struct VkDevice_T*,const struct VkDeviceEventInfoEXT*,const struct VkAllocationCallbacks*,struct VkFence_T**);
void(vkDestroySemaphore)(struct VkDevice_T*,struct VkSemaphore_T*,const struct VkAllocationCallbacks*);
enum VkResult(vkAllocateDescriptorSets)(struct VkDevice_T*,const struct VkDescriptorSetAllocateInfo*,struct VkDescriptorSet_T**);
enum VkResult(vkGetPhysicalDeviceDisplayPropertiesKHR)(struct VkPhysicalDevice_T*,unsigned int*,struct VkDisplayPropertiesKHR*);
void(vkCmdCopyImage)(struct VkCommandBuffer_T*,struct VkImage_T*,enum VkImageLayout,struct VkImage_T*,enum VkImageLayout,unsigned int,const struct VkImageCopy*);
enum VkResult(vkGetShaderInfoAMD)(struct VkDevice_T*,struct VkPipeline_T*,enum VkShaderStageFlagBits,enum VkShaderInfoTypeAMD,unsigned long*,void*);
void(vkUpdateDescriptorSets)(struct VkDevice_T*,unsigned int,const struct VkWriteDescriptorSet*,unsigned int,const struct VkCopyDescriptorSet*);
enum VkResult(vkGetQueryPoolResults)(struct VkDevice_T*,struct VkQueryPool_T*,unsigned int,unsigned int,unsigned long,void*,unsigned long,unsigned int);
void(vkCmdPipelineBarrier)(struct VkCommandBuffer_T*,unsigned int,unsigned int,unsigned int,unsigned int,const struct VkMemoryBarrier*,unsigned int,const struct VkBufferMemoryBarrier*,unsigned int,const struct VkImageMemoryBarrier*);
void(vkDebugReportMessageEXT)(struct VkInstance_T*,unsigned int,enum VkDebugReportObjectTypeEXT,unsigned long,unsigned long,int,const char*,const char*);
enum VkResult(vkDisplayPowerControlEXT)(struct VkDevice_T*,struct VkDisplayKHR_T*,const struct VkDisplayPowerInfoEXT*);
]])
local CLIB = ffi.load(_G.FFI_LIB or "vulkan")
local library = {}
library = {
CreateBufferView = CLIB.vkCreateBufferView,
CmdCopyImageToBuffer = CLIB.vkCmdCopyImageToBuffer,
CmdResolveImage = CLIB.vkCmdResolveImage,
CreateGraphicsPipelines = CLIB.vkCreateGraphicsPipelines,
GetPipelineCacheData = CLIB.vkGetPipelineCacheData,
EnumerateInstanceLayerProperties = CLIB.vkEnumerateInstanceLayerProperties,
ResetEvent = CLIB.vkResetEvent,
QueueWaitIdle = CLIB.vkQueueWaitIdle,
GetPhysicalDeviceExternalSemaphoreProperties = CLIB.vkGetPhysicalDeviceExternalSemaphoreProperties,
EnumeratePhysicalDevices = CLIB.vkEnumeratePhysicalDevices,
ResetFences = CLIB.vkResetFences,
CreateFramebuffer = CLIB.vkCreateFramebuffer,
CmdResetEvent = CLIB.vkCmdResetEvent,
BindBufferMemory = CLIB.vkBindBufferMemory,
GetPhysicalDeviceProperties2 = CLIB.vkGetPhysicalDeviceProperties2,
EndCommandBuffer = CLIB.vkEndCommandBuffer,
GetPhysicalDeviceProperties = CLIB.vkGetPhysicalDeviceProperties,
CmdDispatchIndirect = CLIB.vkCmdDispatchIndirect,
CmdNextSubpass = CLIB.vkCmdNextSubpass,
CmdCopyBuffer = CLIB.vkCmdCopyBuffer,
CreateComputePipelines = CLIB.vkCreateComputePipelines,
CreateDescriptorSetLayout = CLIB.vkCreateDescriptorSetLayout,
DestroyQueryPool = CLIB.vkDestroyQueryPool,
CmdUpdateBuffer = CLIB.vkCmdUpdateBuffer,
CmdSetStencilReference = CLIB.vkCmdSetStencilReference,
CreateQueryPool = CLIB.vkCreateQueryPool,
GetFenceStatus = CLIB.vkGetFenceStatus,
CmdBeginQuery = CLIB.vkCmdBeginQuery,
QueueSubmit = CLIB.vkQueueSubmit,
CmdBlitImage = CLIB.vkCmdBlitImage,
CmdSetDepthBias = CLIB.vkCmdSetDepthBias,
GetPhysicalDeviceImageFormatProperties = CLIB.vkGetPhysicalDeviceImageFormatProperties,
CmdPushConstants = CLIB.vkCmdPushConstants,
CmdCopyBufferToImage = CLIB.vkCmdCopyBufferToImage,
CmdBindVertexBuffers = CLIB.vkCmdBindVertexBuffers,
GetPhysicalDeviceFormatProperties2 = CLIB.vkGetPhysicalDeviceFormatProperties2,
DestroyCommandPool = CLIB.vkDestroyCommandPool,
CreateSampler = CLIB.vkCreateSampler,
CmdSetBlendConstants = CLIB.vkCmdSetBlendConstants,
GetImageSparseMemoryRequirements = CLIB.vkGetImageSparseMemoryRequirements,
DestroyImageView = CLIB.vkDestroyImageView,
GetEventStatus = CLIB.vkGetEventStatus,
CmdFillBuffer = CLIB.vkCmdFillBuffer,
GetPhysicalDeviceSparseImageFormatProperties2 = CLIB.vkGetPhysicalDeviceSparseImageFormatProperties2,
CreateImage = CLIB.vkCreateImage,
AllocateMemory = CLIB.vkAllocateMemory,
CmdClearColorImage = CLIB.vkCmdClearColorImage,
DestroyImage = CLIB.vkDestroyImage,
CmdDispatch = CLIB.vkCmdDispatch,
ResetDescriptorPool = CLIB.vkResetDescriptorPool,
DestroyDevice = CLIB.vkDestroyDevice,
BindImageMemory = CLIB.vkBindImageMemory,
CreateCommandPool = CLIB.vkCreateCommandPool,
CreatePipelineLayout = CLIB.vkCreatePipelineLayout,
EnumerateInstanceVersion = CLIB.vkEnumerateInstanceVersion,
ResetCommandPool = CLIB.vkResetCommandPool,
GetBufferMemoryRequirements = CLIB.vkGetBufferMemoryRequirements,
DeviceWaitIdle = CLIB.vkDeviceWaitIdle,
CmdSetStencilCompareMask = CLIB.vkCmdSetStencilCompareMask,
GetRenderAreaGranularity = CLIB.vkGetRenderAreaGranularity,
DestroyInstance = CLIB.vkDestroyInstance,
GetDeviceQueue2 = CLIB.vkGetDeviceQueue2,
CreateSamplerYcbcrConversion = CLIB.vkCreateSamplerYcbcrConversion,
GetPhysicalDeviceQueueFamilyProperties = CLIB.vkGetPhysicalDeviceQueueFamilyProperties,
CmdSetDeviceMask = CLIB.vkCmdSetDeviceMask,
GetBufferMemoryRequirements2 = CLIB.vkGetBufferMemoryRequirements2,
GetPhysicalDeviceMemoryProperties2 = CLIB.vkGetPhysicalDeviceMemoryProperties2,
CmdWriteTimestamp = CLIB.vkCmdWriteTimestamp,
CreateShaderModule = CLIB.vkCreateShaderModule,
CmdCopyQueryPoolResults = CLIB.vkCmdCopyQueryPoolResults,
MergePipelineCaches = CLIB.vkMergePipelineCaches,
GetDeviceGroupPeerMemoryFeatures = CLIB.vkGetDeviceGroupPeerMemoryFeatures,
CmdSetStencilWriteMask = CLIB.vkCmdSetStencilWriteMask,
CmdBindDescriptorSets = CLIB.vkCmdBindDescriptorSets,
EnumerateInstanceExtensionProperties = CLIB.vkEnumerateInstanceExtensionProperties,
CmdDispatchBase = CLIB.vkCmdDispatchBase,
CmdSetDepthBounds = CLIB.vkCmdSetDepthBounds,
DestroyEvent = CLIB.vkDestroyEvent,
BindBufferMemory2 = CLIB.vkBindBufferMemory2,
DestroyBuffer = CLIB.vkDestroyBuffer,
CreateEvent = CLIB.vkCreateEvent,
GetPhysicalDeviceSparseImageFormatProperties = CLIB.vkGetPhysicalDeviceSparseImageFormatProperties,
AllocateCommandBuffers = CLIB.vkAllocateCommandBuffers,
CreateDescriptorPool = CLIB.vkCreateDescriptorPool,
GetImageSubresourceLayout = CLIB.vkGetImageSubresourceLayout,
GetPhysicalDeviceExternalFenceProperties = CLIB.vkGetPhysicalDeviceExternalFenceProperties,
TrimCommandPool = CLIB.vkTrimCommandPool,
FreeCommandBuffers = CLIB.vkFreeCommandBuffers,
GetPhysicalDeviceExternalBufferProperties = CLIB.vkGetPhysicalDeviceExternalBufferProperties,
DestroyPipeline = CLIB.vkDestroyPipeline,
CmdDrawIndexedIndirect = CLIB.vkCmdDrawIndexedIndirect,
CreateSemaphore = CLIB.vkCreateSemaphore,
DestroyShaderModule = CLIB.vkDestroyShaderModule,
CreatePipelineCache = CLIB.vkCreatePipelineCache,
GetPhysicalDeviceFeatures = CLIB.vkGetPhysicalDeviceFeatures,
DestroyPipelineLayout = CLIB.vkDestroyPipelineLayout,
DestroySampler = CLIB.vkDestroySampler,
MapMemory = CLIB.vkMapMemory,
DestroyFramebuffer = CLIB.vkDestroyFramebuffer,
GetDeviceMemoryCommitment = CLIB.vkGetDeviceMemoryCommitment,
CmdBindIndexBuffer = CLIB.vkCmdBindIndexBuffer,
GetDeviceProcAddr = CLIB.vkGetDeviceProcAddr,
DestroyBufferView = CLIB.vkDestroyBufferView,
EnumerateDeviceLayerProperties = CLIB.vkEnumerateDeviceLayerProperties,
ResetCommandBuffer = CLIB.vkResetCommandBuffer,
CmdDrawIndirect = CLIB.vkCmdDrawIndirect,
CmdSetViewport = CLIB.vkCmdSetViewport,
CmdSetEvent = CLIB.vkCmdSetEvent,
DestroyDescriptorUpdateTemplate = CLIB.vkDestroyDescriptorUpdateTemplate,
CmdResetQueryPool = CLIB.vkCmdResetQueryPool,
GetImageMemoryRequirements = CLIB.vkGetImageMemoryRequirements,
QueueBindSparse = CLIB.vkQueueBindSparse,
SetEvent = CLIB.vkSetEvent,
CmdSetScissor = CLIB.vkCmdSetScissor,
CmdEndQuery = CLIB.vkCmdEndQuery,
GetPhysicalDeviceMemoryProperties = CLIB.vkGetPhysicalDeviceMemoryProperties,
CreateBuffer = CLIB.vkCreateBuffer,
CreateInstance = CLIB.vkCreateInstance,
CmdClearDepthStencilImage = CLIB.vkCmdClearDepthStencilImage,
CmdDraw = CLIB.vkCmdDraw,
CmdDrawIndexed = CLIB.vkCmdDrawIndexed,
FreeDescriptorSets = CLIB.vkFreeDescriptorSets,
CreateRenderPass = CLIB.vkCreateRenderPass,
CreateImageView = CLIB.vkCreateImageView,
GetDeviceQueue = CLIB.vkGetDeviceQueue,
GetPhysicalDeviceImageFormatProperties2 = CLIB.vkGetPhysicalDeviceImageFormatProperties2,
DestroyDescriptorSetLayout = CLIB.vkDestroyDescriptorSetLayout,
CmdWaitEvents = CLIB.vkCmdWaitEvents,
CmdEndRenderPass = CLIB.vkCmdEndRenderPass,
DestroyDescriptorPool = CLIB.vkDestroyDescriptorPool,
GetPhysicalDeviceFormatProperties = CLIB.vkGetPhysicalDeviceFormatProperties,
DestroyFence = CLIB.vkDestroyFence,
CmdBindPipeline = CLIB.vkCmdBindPipeline,
CreateDescriptorUpdateTemplate = CLIB.vkCreateDescriptorUpdateTemplate,
DestroyRenderPass = CLIB.vkDestroyRenderPass,
GetDescriptorSetLayoutSupport = CLIB.vkGetDescriptorSetLayoutSupport,
GetPhysicalDeviceFeatures2 = CLIB.vkGetPhysicalDeviceFeatures2,
BindImageMemory2 = CLIB.vkBindImageMemory2,
CmdClearAttachments = CLIB.vkCmdClearAttachments,
CreateFence = CLIB.vkCreateFence,
CmdExecuteCommands = CLIB.vkCmdExecuteCommands,
EnumeratePhysicalDeviceGroups = CLIB.vkEnumeratePhysicalDeviceGroups,
CmdBeginRenderPass = CLIB.vkCmdBeginRenderPass,
GetImageMemoryRequirements2 = CLIB.vkGetImageMemoryRequirements2,
GetPhysicalDeviceQueueFamilyProperties2 = CLIB.vkGetPhysicalDeviceQueueFamilyProperties2,
BeginCommandBuffer = CLIB.vkBeginCommandBuffer,
CreateDevice = CLIB.vkCreateDevice,
UpdateDescriptorSetWithTemplate = CLIB.vkUpdateDescriptorSetWithTemplate,
GetInstanceProcAddr = CLIB.vkGetInstanceProcAddr,
UnmapMemory = CLIB.vkUnmapMemory,
EnumerateDeviceExtensionProperties = CLIB.vkEnumerateDeviceExtensionProperties,
InvalidateMappedMemoryRanges = CLIB.vkInvalidateMappedMemoryRanges,
WaitForFences = CLIB.vkWaitForFences,
CmdSetLineWidth = CLIB.vkCmdSetLineWidth,
FreeMemory = CLIB.vkFreeMemory,
FlushMappedMemoryRanges = CLIB.vkFlushMappedMemoryRanges,
DestroySamplerYcbcrConversion = CLIB.vkDestroySamplerYcbcrConversion,
GetImageSparseMemoryRequirements2 = CLIB.vkGetImageSparseMemoryRequirements2,
DestroyPipelineCache = CLIB.vkDestroyPipelineCache,
DestroySemaphore = CLIB.vkDestroySemaphore,
AllocateDescriptorSets = CLIB.vkAllocateDescriptorSets,
CmdCopyImage = CLIB.vkCmdCopyImage,
UpdateDescriptorSets = CLIB.vkUpdateDescriptorSets,
GetQueryPoolResults = CLIB.vkGetQueryPoolResults,
CmdPipelineBarrier = CLIB.vkCmdPipelineBarrier,
}
library.util = {}
function library.util.StringList(tbl)
return ffi.new("const char * const ["..#tbl.."]", tbl), #tbl
end
function library.util.GLSLToSpirV(type, glsl)
local glsl_name = os.tmpname() .. "." .. type
local spirv_name = os.tmpname()
local temp
temp = io.open(glsl_name, "wb")
temp:write(glsl)
temp:close()
local msg = io.popen("glslangValidator -V -o " .. spirv_name .. " " .. glsl_name):read("*all")
temp = io.open(spirv_name, "rb")
local spirv = temp:read("*all")
temp:close()
if msg:find("ERROR") then
error(msg, 2)
end
return {pCode = ffi.cast("uint32_t *", spirv), codeSize = #spirv}
end
function library.Assert(var, res)
if var == nil and res ~= "VK_SUCCESS" then
for name, v in pairs(library.e.result) do
if res == v then
name = name:gsub("error_", "")
name = name:gsub("_", " ")
error("Assertion failed: " .. name, 2)
break
end
end
end
return var
end
function library.e(str_enum)
return ffi.cast("enum GLFWenum", str_enum)
end
library.struct_gc = setmetatable({},{__mode = "k"})
library.macros = {}
library.macros.MAKE_VERSION = function(major, minor, patch) return bit.bor(bit.lshift(major, 22), bit.lshift(minor, 12) , patch) end
local extensions = {}
extensions.vkGetPhysicalDeviceMultisamplePropertiesEXT = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , enum VkSampleCountFlagBits , struct VkMultisamplePropertiesEXT * )")}
extensions.vkDestroyObjectTableNVX = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , struct VkObjectTableNVX_T * , const struct VkAllocationCallbacks * )")}
extensions.vkSetDebugUtilsObjectTagEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkDebugUtilsObjectTagInfoEXT * )")}
extensions.vkRegisterDisplayEventEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkDisplayKHR_T * , const struct VkDisplayEventInfoEXT * , const struct VkAllocationCallbacks * , struct VkFence_T * * )")}
extensions.vkImportFenceFdKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkImportFenceFdInfoKHR * )")}
extensions.vkGetPhysicalDeviceFormatProperties2KHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , enum VkFormat , struct VkFormatProperties2 * )")}
extensions.vkGetRefreshCycleDurationGOOGLE = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkSwapchainKHR_T * , struct VkRefreshCycleDurationGOOGLE * )")}
extensions.vkSetDebugUtilsObjectNameEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkDebugUtilsObjectNameInfoEXT * )")}
extensions.vkGetMemoryFdKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkMemoryGetFdInfoKHR * , int * )")}
extensions.vkBindBufferMemory2KHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , unsigned int , const struct VkBindBufferMemoryInfo * )")}
extensions.vkGetDescriptorSetLayoutSupportKHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , const struct VkDescriptorSetLayoutCreateInfo * , struct VkDescriptorSetLayoutSupport * )")}
extensions.vkRegisterObjectsNVX = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkObjectTableNVX_T * , unsigned int , const struct VkObjectTableEntryNVX * const * , const unsigned int * )")}
extensions.vkCmdDrawIndirectCountAMD = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , struct VkBuffer_T * , unsigned long , struct VkBuffer_T * , unsigned long , unsigned int , unsigned int )")}
extensions.vkGetDisplayPlaneSupportedDisplaysKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , unsigned int , unsigned int * , struct VkDisplayKHR_T * * )")}
extensions.vkCreateValidationCacheEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkValidationCacheCreateInfoEXT * , const struct VkAllocationCallbacks * , struct VkValidationCacheEXT_T * * )")}
extensions.vkGetSwapchainStatusKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkSwapchainKHR_T * )")}
extensions.vkCreateDebugUtilsMessengerEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkInstance_T * , const struct VkDebugUtilsMessengerCreateInfoEXT * , const struct VkAllocationCallbacks * , struct VkDebugUtilsMessengerEXT_T * * )")}
extensions.vkDestroyIndirectCommandsLayoutNVX = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , struct VkIndirectCommandsLayoutNVX_T * , const struct VkAllocationCallbacks * )")}
extensions.vkGetPhysicalDeviceMemoryProperties2KHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , struct VkPhysicalDeviceMemoryProperties2 * )")}
extensions.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , const struct VkPhysicalDeviceExternalSemaphoreInfo * , struct VkExternalSemaphoreProperties * )")}
extensions.vkCmdDebugMarkerEndEXT = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * )")}
extensions.vkDestroyDebugReportCallbackEXT = {ctype = ffi.typeof("void(* )( struct VkInstance_T * , struct VkDebugReportCallbackEXT_T * , const struct VkAllocationCallbacks * )")}
extensions.vkGetImageSparseMemoryRequirements2KHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , const struct VkImageSparseMemoryRequirementsInfo2 * , unsigned int * , struct VkSparseImageMemoryRequirements2 * )")}
extensions.vkCmdProcessCommandsNVX = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , const struct VkCmdProcessCommandsInfoNVX * )")}
extensions.vkGetPhysicalDeviceFeatures2KHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , struct VkPhysicalDeviceFeatures2 * )")}
extensions.vkGetPhysicalDeviceExternalBufferPropertiesKHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , const struct VkPhysicalDeviceExternalBufferInfo * , struct VkExternalBufferProperties * )")}
extensions.vkCmdSetSampleLocationsEXT = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , const struct VkSampleLocationsInfoEXT * )")}
extensions.vkGetPhysicalDeviceExternalFencePropertiesKHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , const struct VkPhysicalDeviceExternalFenceInfo * , struct VkExternalFenceProperties * )")}
extensions.vkCreateObjectTableNVX = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkObjectTableCreateInfoNVX * , const struct VkAllocationCallbacks * , struct VkObjectTableNVX_T * * )")}
extensions.vkGetPastPresentationTimingGOOGLE = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkSwapchainKHR_T * , unsigned int * , struct VkPastPresentationTimingGOOGLE * )")}
extensions.vkGetDisplayPlaneCapabilitiesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkDisplayModeKHR_T * , unsigned int , struct VkDisplayPlaneCapabilitiesKHR * )")}
extensions.vkQueueEndDebugUtilsLabelEXT = {ctype = ffi.typeof("void(* )( struct VkQueue_T * )")}
extensions.vkCmdSetDeviceMaskKHR = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , unsigned int )")}
extensions.vkCmdDebugMarkerInsertEXT = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , const struct VkDebugMarkerMarkerInfoEXT * )")}
extensions.vkCmdReserveSpaceForCommandsNVX = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , const struct VkCmdReserveSpaceForCommandsInfoNVX * )")}
extensions.vkGetDisplayModePropertiesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkDisplayKHR_T * , unsigned int * , struct VkDisplayModePropertiesKHR * )")}
extensions.vkCreateDisplayModeKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkDisplayKHR_T * , const struct VkDisplayModeCreateInfoKHR * , const struct VkAllocationCallbacks * , struct VkDisplayModeKHR_T * * )")}
extensions.vkCmdBeginDebugUtilsLabelEXT = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , const struct VkDebugUtilsLabelEXT * )")}
extensions.vkCmdDebugMarkerBeginEXT = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , const struct VkDebugMarkerMarkerInfoEXT * )")}
extensions.vkDebugMarkerSetObjectNameEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkDebugMarkerObjectNameInfoEXT * )")}
extensions.vkGetFenceFdKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkFenceGetFdInfoKHR * , int * )")}
extensions.vkCreateDescriptorUpdateTemplateKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkDescriptorUpdateTemplateCreateInfo * , const struct VkAllocationCallbacks * , struct VkDescriptorUpdateTemplate_T * * )")}
extensions.vkDebugMarkerSetObjectTagEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkDebugMarkerObjectTagInfoEXT * )")}
extensions.vkCmdPushDescriptorSetKHR = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , enum VkPipelineBindPoint , struct VkPipelineLayout_T * , unsigned int , unsigned int , const struct VkWriteDescriptorSet * )")}
extensions.vkUpdateDescriptorSetWithTemplateKHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , struct VkDescriptorSet_T * , struct VkDescriptorUpdateTemplate_T * , const void * )")}
extensions.vkCreateIndirectCommandsLayoutNVX = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkIndirectCommandsLayoutCreateInfoNVX * , const struct VkAllocationCallbacks * , struct VkIndirectCommandsLayoutNVX_T * * )")}
extensions.vkBindImageMemory2KHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , unsigned int , const struct VkBindImageMemoryInfo * )")}
extensions.vkGetDeviceGroupPeerMemoryFeaturesKHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , unsigned int , unsigned int , unsigned int , unsigned int * )")}
extensions.vkDestroySamplerYcbcrConversionKHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , struct VkSamplerYcbcrConversion_T * , const struct VkAllocationCallbacks * )")}
extensions.vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , struct VkDeviceGeneratedCommandsFeaturesNVX * , struct VkDeviceGeneratedCommandsLimitsNVX * )")}
extensions.vkQueueInsertDebugUtilsLabelEXT = {ctype = ffi.typeof("void(* )( struct VkQueue_T * , const struct VkDebugUtilsLabelEXT * )")}
extensions.vkGetPhysicalDeviceSurfaceCapabilities2EXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkSurfaceKHR_T * , struct VkSurfaceCapabilities2EXT * )")}
extensions.vkGetPhysicalDeviceImageFormatProperties2KHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , const struct VkPhysicalDeviceImageFormatInfo2 * , struct VkImageFormatProperties2 * )")}
extensions.vkCmdSetViewportWScalingNV = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , unsigned int , unsigned int , const struct VkViewportWScalingNV * )")}
extensions.vkDestroySurfaceKHR = {ctype = ffi.typeof("void(* )( struct VkInstance_T * , struct VkSurfaceKHR_T * , const struct VkAllocationCallbacks * )")}
extensions.vkGetSwapchainCounterEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkSwapchainKHR_T * , enum VkSurfaceCounterFlagBitsEXT , unsigned long * )")}
extensions.vkGetPhysicalDeviceQueueFamilyProperties2KHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , unsigned int * , struct VkQueueFamilyProperties2 * )")}
extensions.vkDestroyDescriptorUpdateTemplateKHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , struct VkDescriptorUpdateTemplate_T * , const struct VkAllocationCallbacks * )")}
extensions.vkImportSemaphoreFdKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkImportSemaphoreFdInfoKHR * )")}
extensions.vkGetPhysicalDeviceExternalImageFormatPropertiesNV = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , enum VkFormat , enum VkImageType , enum VkImageTiling , unsigned int , unsigned int , unsigned int , struct VkExternalImageFormatPropertiesNV * )")}
extensions.vkGetPhysicalDeviceProperties2KHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , struct VkPhysicalDeviceProperties2 * )")}
extensions.vkGetPhysicalDeviceSurfaceFormats2KHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , const struct VkPhysicalDeviceSurfaceInfo2KHR * , unsigned int * , struct VkSurfaceFormat2KHR * )")}
extensions.vkDestroyDebugUtilsMessengerEXT = {ctype = ffi.typeof("void(* )( struct VkInstance_T * , struct VkDebugUtilsMessengerEXT_T * , const struct VkAllocationCallbacks * )")}
extensions.vkSubmitDebugUtilsMessageEXT = {ctype = ffi.typeof("void(* )( struct VkInstance_T * , enum VkDebugUtilsMessageSeverityFlagBitsEXT , unsigned int , const struct VkDebugUtilsMessengerCallbackDataEXT * )")}
extensions.vkGetPhysicalDeviceSurfaceFormatsKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkSurfaceKHR_T * , unsigned int * , struct VkSurfaceFormatKHR * )")}
extensions.vkGetPhysicalDeviceSurfaceCapabilitiesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkSurfaceKHR_T * , struct VkSurfaceCapabilitiesKHR * )")}
extensions.vkTrimCommandPoolKHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , struct VkCommandPool_T * , unsigned int )")}
extensions.vkGetPhysicalDeviceSurfaceSupportKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , unsigned int , struct VkSurfaceKHR_T * , unsigned int * )")}
extensions.vkGetPhysicalDeviceSparseImageFormatProperties2KHR = {ctype = ffi.typeof("void(* )( struct VkPhysicalDevice_T * , const struct VkPhysicalDeviceSparseImageFormatInfo2 * , unsigned int * , struct VkSparseImageFormatProperties2 * )")}
extensions.vkCreateDebugReportCallbackEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkInstance_T * , const struct VkDebugReportCallbackCreateInfoEXT * , const struct VkAllocationCallbacks * , struct VkDebugReportCallbackEXT_T * * )")}
extensions.vkGetPhysicalDevicePresentRectanglesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkSurfaceKHR_T * , unsigned int * , struct VkRect2D * )")}
extensions.vkCmdWriteBufferMarkerAMD = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , enum VkPipelineStageFlagBits , struct VkBuffer_T * , unsigned long , unsigned int )")}
extensions.vkGetMemoryHostPointerPropertiesEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , enum VkExternalMemoryHandleTypeFlagBits , const void * , struct VkMemoryHostPointerPropertiesEXT * )")}
extensions.vkCmdPushDescriptorSetWithTemplateKHR = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , struct VkDescriptorUpdateTemplate_T * , struct VkPipelineLayout_T * , unsigned int , const void * )")}
extensions.vkGetValidationCacheDataEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkValidationCacheEXT_T * , unsigned long * , void * )")}
extensions.vkCreateSamplerYcbcrConversionKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkSamplerYcbcrConversionCreateInfo * , const struct VkAllocationCallbacks * , struct VkSamplerYcbcrConversion_T * * )")}
extensions.vkDestroyValidationCacheEXT = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , struct VkValidationCacheEXT_T * , const struct VkAllocationCallbacks * )")}
extensions.vkCmdInsertDebugUtilsLabelEXT = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , const struct VkDebugUtilsLabelEXT * )")}
extensions.vkGetSemaphoreFdKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkSemaphoreGetFdInfoKHR * , int * )")}
extensions.vkCmdEndDebugUtilsLabelEXT = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * )")}
extensions.vkCreateDisplayPlaneSurfaceKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkInstance_T * , const struct VkDisplaySurfaceCreateInfoKHR * , const struct VkAllocationCallbacks * , struct VkSurfaceKHR_T * * )")}
extensions.vkCmdDispatchBaseKHR = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , unsigned int , unsigned int , unsigned int , unsigned int , unsigned int , unsigned int )")}
extensions.vkAcquireNextImageKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkSwapchainKHR_T * , unsigned long , struct VkSemaphore_T * , struct VkFence_T * , unsigned int * )")}
extensions.vkDestroySwapchainKHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , struct VkSwapchainKHR_T * , const struct VkAllocationCallbacks * )")}
extensions.vkGetPhysicalDeviceSurfaceCapabilities2KHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , const struct VkPhysicalDeviceSurfaceInfo2KHR * , struct VkSurfaceCapabilities2KHR * )")}
extensions.vkGetBufferMemoryRequirements2KHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , const struct VkBufferMemoryRequirementsInfo2 * , struct VkMemoryRequirements2 * )")}
extensions.vkGetMemoryFdPropertiesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , enum VkExternalMemoryHandleTypeFlagBits , int , struct VkMemoryFdPropertiesKHR * )")}
extensions.vkGetDeviceGroupPresentCapabilitiesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkDeviceGroupPresentCapabilitiesKHR * )")}
extensions.vkGetSwapchainImagesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkSwapchainKHR_T * , unsigned int * , struct VkImage_T * * )")}
extensions.vkCreateSwapchainKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkSwapchainCreateInfoKHR * , const struct VkAllocationCallbacks * , struct VkSwapchainKHR_T * * )")}
extensions.vkQueueBeginDebugUtilsLabelEXT = {ctype = ffi.typeof("void(* )( struct VkQueue_T * , const struct VkDebugUtilsLabelEXT * )")}
extensions.vkMergeValidationCachesEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkValidationCacheEXT_T * , unsigned int , struct VkValidationCacheEXT_T * const * )")}
extensions.vkReleaseDisplayEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkDisplayKHR_T * )")}
extensions.vkUnregisterObjectsNVX = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkObjectTableNVX_T * , unsigned int , const enum VkObjectEntryTypeNVX * , const unsigned int * )")}
extensions.vkCmdDrawIndexedIndirectCountAMD = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , struct VkBuffer_T * , unsigned long , struct VkBuffer_T * , unsigned long , unsigned int , unsigned int )")}
extensions.vkGetPhysicalDeviceDisplayPlanePropertiesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , unsigned int * , struct VkDisplayPlanePropertiesKHR * )")}
extensions.vkGetPhysicalDeviceSurfacePresentModesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , struct VkSurfaceKHR_T * , unsigned int * , enum VkPresentModeKHR * )")}
extensions.vkGetImageMemoryRequirements2KHR = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , const struct VkImageMemoryRequirementsInfo2 * , struct VkMemoryRequirements2 * )")}
extensions.vkQueuePresentKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkQueue_T * , const struct VkPresentInfoKHR * )")}
extensions.vkSetHdrMetadataEXT = {ctype = ffi.typeof("void(* )( struct VkDevice_T * , unsigned int , struct VkSwapchainKHR_T * const * , const struct VkHdrMetadataEXT * )")}
extensions.vkGetDeviceGroupSurfacePresentModesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkSurfaceKHR_T * , unsigned int * )")}
extensions.vkAcquireNextImage2KHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkAcquireNextImageInfoKHR * , unsigned int * )")}
extensions.vkCmdSetDiscardRectangleEXT = {ctype = ffi.typeof("void(* )( struct VkCommandBuffer_T * , unsigned int , unsigned int , const struct VkRect2D * )")}
extensions.vkCreateSharedSwapchainsKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , unsigned int , const struct VkSwapchainCreateInfoKHR * , const struct VkAllocationCallbacks * , struct VkSwapchainKHR_T * * )")}
extensions.vkEnumeratePhysicalDeviceGroupsKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkInstance_T * , unsigned int * , struct VkPhysicalDeviceGroupProperties * )")}
extensions.vkRegisterDeviceEventEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , const struct VkDeviceEventInfoEXT * , const struct VkAllocationCallbacks * , struct VkFence_T * * )")}
extensions.vkGetPhysicalDeviceDisplayPropertiesKHR = {ctype = ffi.typeof("enum VkResult(* )( struct VkPhysicalDevice_T * , unsigned int * , struct VkDisplayPropertiesKHR * )")}
extensions.vkGetShaderInfoAMD = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkPipeline_T * , enum VkShaderStageFlagBits , enum VkShaderInfoTypeAMD , unsigned long * , void * )")}
extensions.vkDebugReportMessageEXT = {ctype = ffi.typeof("void(* )( struct VkInstance_T * , unsigned int , enum VkDebugReportObjectTypeEXT , unsigned long , unsigned long , int , const char * , const char * )")}
extensions.vkDisplayPowerControlEXT = {ctype = ffi.typeof("enum VkResult(* )( struct VkDevice_T * , struct VkDisplayKHR_T * , const struct VkDisplayPowerInfoEXT * )")}
local function load(func, ptr, ext, decl, name)
if extensions[ext] and not decl and not name then
decl = extensions[ext].ctype
end
local ptr = func(ptr, ext)
if ptr ~= nil then
name = name or ext:match("^vk(.+)")
local func = ffi.cast(decl, ptr)
library[name] = func
return func
end
end
library.util.LoadInstanceProcAddr = function(...) return load(CLIB.vkGetInstanceProcAddr, ...) end
library.util.LoadDeviceProcAddr = function(...) return load(CLIB.vkGetDeviceProcAddr, ...) end
library.e = {
LOD_CLAMP_NONE = 1000.0,
REMAINING_MIP_LEVELS = 0xFFFFFFFF,
REMAINING_ARRAY_LAYERS = 0xFFFFFFFF,
WHOLE_SIZE = 0xFFFFFFFFFFFFFFFFULL,
ATTACHMENT_UNUSED = 0xFFFFFFFF,
TRUE = 1,
FALSE = 0,
QUEUE_FAMILY_IGNORED = 0xFFFFFFFF,
SUBPASS_EXTERNAL = 0xFFFFFFFF,
MAX_PHYSICAL_DEVICE_NAME_SIZE = 256,
UUID_SIZE = 16,
MAX_MEMORY_TYPES = 32,
MAX_MEMORY_HEAPS = 16,
MAX_EXTENSION_NAME_SIZE = 256,
MAX_DESCRIPTION_SIZE = 256,
DYNAMIC_STATE_VIEWPORT = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_VIEWPORT"),
DYNAMIC_STATE_SCISSOR = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_SCISSOR"),
DYNAMIC_STATE_LINE_WIDTH = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_LINE_WIDTH"),
DYNAMIC_STATE_DEPTH_BIAS = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_DEPTH_BIAS"),
DYNAMIC_STATE_BLEND_CONSTANTS = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_BLEND_CONSTANTS"),
DYNAMIC_STATE_DEPTH_BOUNDS = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_DEPTH_BOUNDS"),
DYNAMIC_STATE_STENCIL_COMPARE_MASK = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"),
DYNAMIC_STATE_STENCIL_WRITE_MASK = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"),
DYNAMIC_STATE_STENCIL_REFERENCE = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_STENCIL_REFERENCE"),
DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"),
DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"),
DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"),
DYNAMIC_STATE_BEGIN_RANGE = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_BEGIN_RANGE"),
DYNAMIC_STATE_END_RANGE = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_END_RANGE"),
DYNAMIC_STATE_RANGE_SIZE = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_RANGE_SIZE"),
DYNAMIC_STATE_MAX_ENUM = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_MAX_ENUM"),
OBJECT_TYPE_UNKNOWN = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_UNKNOWN"),
OBJECT_TYPE_INSTANCE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_INSTANCE"),
OBJECT_TYPE_PHYSICAL_DEVICE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_PHYSICAL_DEVICE"),
OBJECT_TYPE_DEVICE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DEVICE"),
OBJECT_TYPE_QUEUE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_QUEUE"),
OBJECT_TYPE_SEMAPHORE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SEMAPHORE"),
OBJECT_TYPE_COMMAND_BUFFER = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_COMMAND_BUFFER"),
OBJECT_TYPE_FENCE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_FENCE"),
OBJECT_TYPE_DEVICE_MEMORY = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DEVICE_MEMORY"),
OBJECT_TYPE_BUFFER = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_BUFFER"),
OBJECT_TYPE_IMAGE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_IMAGE"),
OBJECT_TYPE_EVENT = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_EVENT"),
OBJECT_TYPE_QUERY_POOL = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_QUERY_POOL"),
OBJECT_TYPE_BUFFER_VIEW = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_BUFFER_VIEW"),
OBJECT_TYPE_IMAGE_VIEW = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_IMAGE_VIEW"),
OBJECT_TYPE_SHADER_MODULE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SHADER_MODULE"),
OBJECT_TYPE_PIPELINE_CACHE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_PIPELINE_CACHE"),
OBJECT_TYPE_PIPELINE_LAYOUT = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_PIPELINE_LAYOUT"),
OBJECT_TYPE_RENDER_PASS = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_RENDER_PASS"),
OBJECT_TYPE_PIPELINE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_PIPELINE"),
OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"),
OBJECT_TYPE_SAMPLER = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SAMPLER"),
OBJECT_TYPE_DESCRIPTOR_POOL = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_POOL"),
OBJECT_TYPE_DESCRIPTOR_SET = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_SET"),
OBJECT_TYPE_FRAMEBUFFER = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_FRAMEBUFFER"),
OBJECT_TYPE_COMMAND_POOL = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_COMMAND_POOL"),
OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"),
OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"),
OBJECT_TYPE_SURFACE_KHR = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SURFACE_KHR"),
OBJECT_TYPE_SWAPCHAIN_KHR = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SWAPCHAIN_KHR"),
OBJECT_TYPE_DISPLAY_KHR = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DISPLAY_KHR"),
OBJECT_TYPE_DISPLAY_MODE_KHR = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"),
OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"),
OBJECT_TYPE_OBJECT_TABLE_NVX = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_OBJECT_TABLE_NVX"),
OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX"),
OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"),
OBJECT_TYPE_VALIDATION_CACHE_EXT = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"),
OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR"),
OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR"),
OBJECT_TYPE_BEGIN_RANGE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_BEGIN_RANGE"),
OBJECT_TYPE_END_RANGE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_END_RANGE"),
OBJECT_TYPE_RANGE_SIZE = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_RANGE_SIZE"),
OBJECT_TYPE_MAX_ENUM = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_MAX_ENUM"),
IMAGE_LAYOUT_UNDEFINED = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_UNDEFINED"),
IMAGE_LAYOUT_GENERAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_GENERAL"),
IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"),
IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"),
IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"),
IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"),
IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"),
IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"),
IMAGE_LAYOUT_PREINITIALIZED = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_PREINITIALIZED"),
IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"),
IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"),
IMAGE_LAYOUT_PRESENT_SRC_KHR = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"),
IMAGE_LAYOUT_SHARED_PRESENT_KHR = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"),
IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR"),
IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR"),
IMAGE_LAYOUT_BEGIN_RANGE = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_BEGIN_RANGE"),
IMAGE_LAYOUT_END_RANGE = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_END_RANGE"),
IMAGE_LAYOUT_RANGE_SIZE = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_RANGE_SIZE"),
IMAGE_LAYOUT_MAX_ENUM = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_MAX_ENUM"),
SAMPLER_MIPMAP_MODE_NEAREST = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_NEAREST"),
SAMPLER_MIPMAP_MODE_LINEAR = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_LINEAR"),
SAMPLER_MIPMAP_MODE_BEGIN_RANGE = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE"),
SAMPLER_MIPMAP_MODE_END_RANGE = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_END_RANGE"),
SAMPLER_MIPMAP_MODE_RANGE_SIZE = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE"),
SAMPLER_MIPMAP_MODE_MAX_ENUM = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_MAX_ENUM"),
INDEX_TYPE_UINT16 = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_UINT16"),
INDEX_TYPE_UINT32 = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_UINT32"),
INDEX_TYPE_BEGIN_RANGE = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_BEGIN_RANGE"),
INDEX_TYPE_END_RANGE = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_END_RANGE"),
INDEX_TYPE_RANGE_SIZE = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_RANGE_SIZE"),
INDEX_TYPE_MAX_ENUM = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_MAX_ENUM"),
CULL_MODE_NONE = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_NONE"),
CULL_MODE_FRONT_BIT = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_FRONT_BIT"),
CULL_MODE_BACK_BIT = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_BACK_BIT"),
CULL_MODE_FRONT_AND_BACK = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_FRONT_AND_BACK"),
CULL_MODE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_FLAG_BITS_MAX_ENUM"),
OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX"),
OBJECT_ENTRY_TYPE_PIPELINE_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX"),
OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX"),
OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX"),
OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX"),
OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX"),
OBJECT_ENTRY_TYPE_END_RANGE_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX"),
OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX"),
OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX"),
PIPELINE_STAGE_TOP_OF_PIPE_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
PIPELINE_STAGE_DRAW_INDIRECT_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
PIPELINE_STAGE_VERTEX_INPUT_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
PIPELINE_STAGE_VERTEX_SHADER_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
PIPELINE_STAGE_GEOMETRY_SHADER_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
PIPELINE_STAGE_FRAGMENT_SHADER_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
PIPELINE_STAGE_COMPUTE_SHADER_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
PIPELINE_STAGE_TRANSFER_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_TRANSFER_BIT"),
PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
PIPELINE_STAGE_HOST_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_HOST_BIT"),
PIPELINE_STAGE_ALL_GRAPHICS_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
PIPELINE_STAGE_ALL_COMMANDS_BIT = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"),
PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM"),
IMAGE_USAGE_TRANSFER_SRC_BIT = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
IMAGE_USAGE_TRANSFER_DST_BIT = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
IMAGE_USAGE_SAMPLED_BIT = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_SAMPLED_BIT"),
IMAGE_USAGE_STORAGE_BIT = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_STORAGE_BIT"),
IMAGE_USAGE_COLOR_ATTACHMENT_BIT = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
IMAGE_USAGE_INPUT_ATTACHMENT_BIT = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
IMAGE_USAGE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM"),
COMMAND_POOL_CREATE_TRANSIENT_BIT = ffi.cast("enum VkCommandPoolCreateFlagBits", "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = ffi.cast("enum VkCommandPoolCreateFlagBits", "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
COMMAND_POOL_CREATE_PROTECTED_BIT = ffi.cast("enum VkCommandPoolCreateFlagBits", "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkCommandPoolCreateFlagBits", "VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT"),
TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT"),
TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR"),
TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR"),
TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE"),
TESSELLATION_DOMAIN_ORIGIN_END_RANGE = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE"),
TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE"),
TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM"),
QUEUE_GLOBAL_PRIORITY_LOW_EXT = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"),
QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"),
QUEUE_GLOBAL_PRIORITY_HIGH_EXT = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"),
QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"),
QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT"),
QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT"),
QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT"),
QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT"),
DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR"),
DEPENDENCY_BY_REGION_BIT = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_BY_REGION_BIT"),
DEPENDENCY_DEVICE_GROUP_BIT = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_DEVICE_GROUP_BIT"),
DEPENDENCY_VIEW_LOCAL_BIT = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_VIEW_LOCAL_BIT"),
DEPENDENCY_VIEW_LOCAL_BIT_KHR = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR"),
DEPENDENCY_DEVICE_GROUP_BIT_KHR = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"),
DEPENDENCY_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_FLAG_BITS_MAX_ENUM"),
SYSTEM_ALLOCATION_SCOPE_COMMAND = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"),
SYSTEM_ALLOCATION_SCOPE_OBJECT = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"),
SYSTEM_ALLOCATION_SCOPE_CACHE = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"),
SYSTEM_ALLOCATION_SCOPE_DEVICE = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"),
SYSTEM_ALLOCATION_SCOPE_INSTANCE = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"),
SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE"),
SYSTEM_ALLOCATION_SCOPE_END_RANGE = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE"),
SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE"),
SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM"),
SURFACE_COUNTER_VBLANK_EXT = ffi.cast("enum VkSurfaceCounterFlagBitsEXT", "VK_SURFACE_COUNTER_VBLANK_EXT"),
SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = ffi.cast("enum VkSurfaceCounterFlagBitsEXT", "VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT"),
FILTER_NEAREST = ffi.cast("enum VkFilter", "VK_FILTER_NEAREST"),
FILTER_LINEAR = ffi.cast("enum VkFilter", "VK_FILTER_LINEAR"),
FILTER_CUBIC_IMG = ffi.cast("enum VkFilter", "VK_FILTER_CUBIC_IMG"),
FILTER_BEGIN_RANGE = ffi.cast("enum VkFilter", "VK_FILTER_BEGIN_RANGE"),
FILTER_END_RANGE = ffi.cast("enum VkFilter", "VK_FILTER_END_RANGE"),
FILTER_RANGE_SIZE = ffi.cast("enum VkFilter", "VK_FILTER_RANGE_SIZE"),
FILTER_MAX_ENUM = ffi.cast("enum VkFilter", "VK_FILTER_MAX_ENUM"),
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET"),
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"),
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR"),
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE"),
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE"),
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE"),
DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM"),
BUFFER_USAGE_TRANSFER_SRC_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
BUFFER_USAGE_TRANSFER_DST_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
BUFFER_USAGE_UNIFORM_BUFFER_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
BUFFER_USAGE_STORAGE_BUFFER_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
BUFFER_USAGE_INDEX_BUFFER_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
BUFFER_USAGE_VERTEX_BUFFER_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
BUFFER_USAGE_INDIRECT_BUFFER_BIT = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
BUFFER_USAGE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
FENCE_IMPORT_TEMPORARY_BIT = ffi.cast("enum VkFenceImportFlagBits", "VK_FENCE_IMPORT_TEMPORARY_BIT"),
FENCE_IMPORT_TEMPORARY_BIT_KHR = ffi.cast("enum VkFenceImportFlagBits", "VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"),
FENCE_IMPORT_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkFenceImportFlagBits", "VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM"),
DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
PIPELINE_CREATE_DERIVATIVE_BIT = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"),
PIPELINE_CREATE_DISPATCH_BASE = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_DISPATCH_BASE"),
PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"),
PIPELINE_CREATE_DISPATCH_BASE_KHR = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"),
PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM"),
COVERAGE_MODULATION_MODE_NONE_NV = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_NONE_NV"),
COVERAGE_MODULATION_MODE_RGB_NV = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_RGB_NV"),
COVERAGE_MODULATION_MODE_ALPHA_NV = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_ALPHA_NV"),
COVERAGE_MODULATION_MODE_RGBA_NV = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_RGBA_NV"),
COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV"),
COVERAGE_MODULATION_MODE_END_RANGE_NV = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_END_RANGE_NV"),
COVERAGE_MODULATION_MODE_RANGE_SIZE_NV = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV"),
COVERAGE_MODULATION_MODE_MAX_ENUM_NV = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV"),
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"),
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"),
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
IMAGE_VIEW_TYPE_1D = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_1D"),
IMAGE_VIEW_TYPE_2D = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_2D"),
IMAGE_VIEW_TYPE_3D = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_3D"),
IMAGE_VIEW_TYPE_CUBE = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_CUBE"),
IMAGE_VIEW_TYPE_1D_ARRAY = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_1D_ARRAY"),
IMAGE_VIEW_TYPE_2D_ARRAY = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_2D_ARRAY"),
IMAGE_VIEW_TYPE_CUBE_ARRAY = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"),
IMAGE_VIEW_TYPE_BEGIN_RANGE = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_BEGIN_RANGE"),
IMAGE_VIEW_TYPE_END_RANGE = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_END_RANGE"),
IMAGE_VIEW_TYPE_RANGE_SIZE = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_RANGE_SIZE"),
IMAGE_VIEW_TYPE_MAX_ENUM = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_MAX_ENUM"),
QUERY_CONTROL_PRECISE_BIT = ffi.cast("enum VkQueryControlFlagBits", "VK_QUERY_CONTROL_PRECISE_BIT"),
QUERY_CONTROL_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkQueryControlFlagBits", "VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM"),
ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = ffi.cast("enum VkAttachmentDescriptionFlagBits", "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkAttachmentDescriptionFlagBits", "VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
PIPELINE_CACHE_HEADER_VERSION_ONE = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"),
PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE"),
PIPELINE_CACHE_HEADER_VERSION_END_RANGE = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE"),
PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE"),
PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM"),
DEBUG_REPORT_INFORMATION_BIT_EXT = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
DEBUG_REPORT_WARNING_BIT_EXT = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_WARNING_BIT_EXT"),
DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
DEBUG_REPORT_ERROR_BIT_EXT = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_ERROR_BIT_EXT"),
DEBUG_REPORT_DEBUG_BIT_EXT = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT"),
PRIMITIVE_TOPOLOGY_POINT_LIST = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"),
PRIMITIVE_TOPOLOGY_LINE_LIST = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"),
PRIMITIVE_TOPOLOGY_LINE_STRIP = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"),
PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"),
PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"),
PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"),
PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"),
PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"),
PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"),
PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"),
PRIMITIVE_TOPOLOGY_PATCH_LIST = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"),
PRIMITIVE_TOPOLOGY_BEGIN_RANGE = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE"),
PRIMITIVE_TOPOLOGY_END_RANGE = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_END_RANGE"),
PRIMITIVE_TOPOLOGY_RANGE_SIZE = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE"),
PRIMITIVE_TOPOLOGY_MAX_ENUM = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_MAX_ENUM"),
DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT"),
VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"),
VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT"),
VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT"),
VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT"),
VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT"),
DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = ffi.cast("enum VkDescriptorSetLayoutCreateFlagBits", "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = ffi.cast("enum VkDescriptorSetLayoutCreateFlagBits", "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"),
DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkDescriptorSetLayoutCreateFlagBits", "VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"),
CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"),
CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"),
CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT"),
CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT"),
CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT"),
CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT"),
DISPLAY_POWER_STATE_OFF_EXT = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_OFF_EXT"),
DISPLAY_POWER_STATE_SUSPEND_EXT = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_SUSPEND_EXT"),
DISPLAY_POWER_STATE_ON_EXT = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_ON_EXT"),
DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT"),
DISPLAY_POWER_STATE_END_RANGE_EXT = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_END_RANGE_EXT"),
DISPLAY_POWER_STATE_RANGE_SIZE_EXT = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT"),
DISPLAY_POWER_STATE_MAX_ENUM_EXT = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT"),
SAMPLER_YCBCR_RANGE_ITU_FULL = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_ITU_FULL"),
SAMPLER_YCBCR_RANGE_ITU_NARROW = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW"),
SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR"),
SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR"),
SAMPLER_YCBCR_RANGE_BEGIN_RANGE = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE"),
SAMPLER_YCBCR_RANGE_END_RANGE = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_END_RANGE"),
SAMPLER_YCBCR_RANGE_RANGE_SIZE = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE"),
SAMPLER_YCBCR_RANGE_MAX_ENUM = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_MAX_ENUM"),
DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = ffi.cast("enum VkDescriptorPoolCreateFlagBits", "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = ffi.cast("enum VkDescriptorPoolCreateFlagBits", "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkDescriptorPoolCreateFlagBits", "VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
SURFACE_TRANSFORM_IDENTITY_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
SURFACE_TRANSFORM_INHERIT_BIT_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR"),
DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = ffi.cast("enum VkDebugUtilsMessageTypeFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"),
DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = ffi.cast("enum VkDebugUtilsMessageTypeFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"),
DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = ffi.cast("enum VkDebugUtilsMessageTypeFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"),
DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = ffi.cast("enum VkDebugUtilsMessageTypeFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT"),
DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"),
DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"),
DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"),
DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"),
DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT"),
COMPARE_OP_NEVER = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_NEVER"),
COMPARE_OP_LESS = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_LESS"),
COMPARE_OP_EQUAL = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_EQUAL"),
COMPARE_OP_LESS_OR_EQUAL = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_LESS_OR_EQUAL"),
COMPARE_OP_GREATER = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_GREATER"),
COMPARE_OP_NOT_EQUAL = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_NOT_EQUAL"),
COMPARE_OP_GREATER_OR_EQUAL = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_GREATER_OR_EQUAL"),
COMPARE_OP_ALWAYS = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_ALWAYS"),
COMPARE_OP_BEGIN_RANGE = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_BEGIN_RANGE"),
COMPARE_OP_END_RANGE = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_END_RANGE"),
COMPARE_OP_RANGE_SIZE = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_RANGE_SIZE"),
COMPARE_OP_MAX_ENUM = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_MAX_ENUM"),
SHADER_STAGE_VERTEX_BIT = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_VERTEX_BIT"),
SHADER_STAGE_TESSELLATION_CONTROL_BIT = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
SHADER_STAGE_TESSELLATION_EVALUATION_BIT = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
SHADER_STAGE_GEOMETRY_BIT = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_GEOMETRY_BIT"),
SHADER_STAGE_FRAGMENT_BIT = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_FRAGMENT_BIT"),
SHADER_STAGE_COMPUTE_BIT = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_COMPUTE_BIT"),
SHADER_STAGE_ALL_GRAPHICS = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_ALL_GRAPHICS"),
SHADER_STAGE_ALL = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_ALL"),
SHADER_STAGE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM"),
SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = ffi.cast("enum VkSubpassDescriptionFlagBits", "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"),
SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = ffi.cast("enum VkSubpassDescriptionFlagBits", "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"),
SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkSubpassDescriptionFlagBits", "VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
SUBGROUP_FEATURE_BASIC_BIT = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_BASIC_BIT"),
SUBGROUP_FEATURE_VOTE_BIT = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_VOTE_BIT"),
SUBGROUP_FEATURE_ARITHMETIC_BIT = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
SUBGROUP_FEATURE_BALLOT_BIT = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_BALLOT_BIT"),
SUBGROUP_FEATURE_SHUFFLE_BIT = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
SUBGROUP_FEATURE_CLUSTERED_BIT = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
SUBGROUP_FEATURE_QUAD_BIT = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_QUAD_BIT"),
SUBGROUP_FEATURE_PARTITIONED_BIT_NV = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"),
SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM"),
SUCCESS = ffi.cast("enum VkResult", "VK_SUCCESS"),
NOT_READY = ffi.cast("enum VkResult", "VK_NOT_READY"),
TIMEOUT = ffi.cast("enum VkResult", "VK_TIMEOUT"),
EVENT_SET = ffi.cast("enum VkResult", "VK_EVENT_SET"),
EVENT_RESET = ffi.cast("enum VkResult", "VK_EVENT_RESET"),
INCOMPLETE = ffi.cast("enum VkResult", "VK_INCOMPLETE"),
ERROR_OUT_OF_HOST_MEMORY = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_HOST_MEMORY"),
ERROR_OUT_OF_DEVICE_MEMORY = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_DEVICE_MEMORY"),
ERROR_INITIALIZATION_FAILED = ffi.cast("enum VkResult", "VK_ERROR_INITIALIZATION_FAILED"),
ERROR_DEVICE_LOST = ffi.cast("enum VkResult", "VK_ERROR_DEVICE_LOST"),
ERROR_MEMORY_MAP_FAILED = ffi.cast("enum VkResult", "VK_ERROR_MEMORY_MAP_FAILED"),
ERROR_LAYER_NOT_PRESENT = ffi.cast("enum VkResult", "VK_ERROR_LAYER_NOT_PRESENT"),
ERROR_EXTENSION_NOT_PRESENT = ffi.cast("enum VkResult", "VK_ERROR_EXTENSION_NOT_PRESENT"),
ERROR_FEATURE_NOT_PRESENT = ffi.cast("enum VkResult", "VK_ERROR_FEATURE_NOT_PRESENT"),
ERROR_INCOMPATIBLE_DRIVER = ffi.cast("enum VkResult", "VK_ERROR_INCOMPATIBLE_DRIVER"),
ERROR_TOO_MANY_OBJECTS = ffi.cast("enum VkResult", "VK_ERROR_TOO_MANY_OBJECTS"),
ERROR_FORMAT_NOT_SUPPORTED = ffi.cast("enum VkResult", "VK_ERROR_FORMAT_NOT_SUPPORTED"),
ERROR_FRAGMENTED_POOL = ffi.cast("enum VkResult", "VK_ERROR_FRAGMENTED_POOL"),
ERROR_OUT_OF_POOL_MEMORY = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_POOL_MEMORY"),
ERROR_INVALID_EXTERNAL_HANDLE = ffi.cast("enum VkResult", "VK_ERROR_INVALID_EXTERNAL_HANDLE"),
ERROR_SURFACE_LOST_KHR = ffi.cast("enum VkResult", "VK_ERROR_SURFACE_LOST_KHR"),
ERROR_NATIVE_WINDOW_IN_USE_KHR = ffi.cast("enum VkResult", "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"),
SUBOPTIMAL_KHR = ffi.cast("enum VkResult", "VK_SUBOPTIMAL_KHR"),
ERROR_OUT_OF_DATE_KHR = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_DATE_KHR"),
ERROR_INCOMPATIBLE_DISPLAY_KHR = ffi.cast("enum VkResult", "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"),
ERROR_VALIDATION_FAILED_EXT = ffi.cast("enum VkResult", "VK_ERROR_VALIDATION_FAILED_EXT"),
ERROR_INVALID_SHADER_NV = ffi.cast("enum VkResult", "VK_ERROR_INVALID_SHADER_NV"),
ERROR_FRAGMENTATION_EXT = ffi.cast("enum VkResult", "VK_ERROR_FRAGMENTATION_EXT"),
ERROR_NOT_PERMITTED_EXT = ffi.cast("enum VkResult", "VK_ERROR_NOT_PERMITTED_EXT"),
ERROR_OUT_OF_POOL_MEMORY_KHR = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_POOL_MEMORY_KHR"),
ERROR_INVALID_EXTERNAL_HANDLE_KHR = ffi.cast("enum VkResult", "VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR"),
RESULT_BEGIN_RANGE = ffi.cast("enum VkResult", "VK_RESULT_BEGIN_RANGE"),
RESULT_END_RANGE = ffi.cast("enum VkResult", "VK_RESULT_END_RANGE"),
RESULT_RANGE_SIZE = ffi.cast("enum VkResult", "VK_RESULT_RANGE_SIZE"),
RESULT_MAX_ENUM = ffi.cast("enum VkResult", "VK_RESULT_MAX_ENUM"),
PEER_MEMORY_FEATURE_COPY_SRC_BIT = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"),
PEER_MEMORY_FEATURE_COPY_DST_BIT = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"),
PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"),
PEER_MEMORY_FEATURE_GENERIC_DST_BIT = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"),
PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR"),
PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR"),
PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR"),
PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR"),
PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
FENCE_CREATE_SIGNALED_BIT = ffi.cast("enum VkFenceCreateFlagBits", "VK_FENCE_CREATE_SIGNALED_BIT"),
FENCE_CREATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkFenceCreateFlagBits", "VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM"),
IMAGE_CREATE_SPARSE_BINDING_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
IMAGE_CREATE_SPARSE_RESIDENCY_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
IMAGE_CREATE_SPARSE_ALIASED_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
IMAGE_CREATE_MUTABLE_FORMAT_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
IMAGE_CREATE_CUBE_COMPATIBLE_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
IMAGE_CREATE_ALIAS_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_ALIAS_BIT"),
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"),
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"),
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"),
IMAGE_CREATE_EXTENDED_USAGE_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"),
IMAGE_CREATE_PROTECTED_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_PROTECTED_BIT"),
IMAGE_CREATE_DISJOINT_BIT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_DISJOINT_BIT"),
IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"),
IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"),
IMAGE_CREATE_DISJOINT_BIT_KHR = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_DISJOINT_BIT_KHR"),
IMAGE_CREATE_ALIAS_BIT_KHR = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_ALIAS_BIT_KHR"),
IMAGE_CREATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM"),
SAMPLE_COUNT_1_BIT = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_1_BIT"),
SAMPLE_COUNT_2_BIT = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_2_BIT"),
SAMPLE_COUNT_4_BIT = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_4_BIT"),
SAMPLE_COUNT_8_BIT = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_8_BIT"),
SAMPLE_COUNT_16_BIT = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_16_BIT"),
SAMPLE_COUNT_32_BIT = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_32_BIT"),
SAMPLE_COUNT_64_BIT = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_64_BIT"),
SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM"),
EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = ffi.cast("enum VkExternalFenceFeatureFlagBits", "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"),
EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = ffi.cast("enum VkExternalFenceFeatureFlagBits", "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"),
EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = ffi.cast("enum VkExternalFenceFeatureFlagBits", "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"),
EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = ffi.cast("enum VkExternalFenceFeatureFlagBits", "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"),
EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkExternalFenceFeatureFlagBits", "VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM"),
QUERY_RESULT_64_BIT = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_64_BIT"),
QUERY_RESULT_WAIT_BIT = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_WAIT_BIT"),
QUERY_RESULT_WITH_AVAILABILITY_BIT = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
QUERY_RESULT_PARTIAL_BIT = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_PARTIAL_BIT"),
QUERY_RESULT_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM"),
QUERY_TYPE_OCCLUSION = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_OCCLUSION"),
QUERY_TYPE_PIPELINE_STATISTICS = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_PIPELINE_STATISTICS"),
QUERY_TYPE_TIMESTAMP = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_TIMESTAMP"),
QUERY_TYPE_BEGIN_RANGE = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_BEGIN_RANGE"),
QUERY_TYPE_END_RANGE = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_END_RANGE"),
QUERY_TYPE_RANGE_SIZE = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_RANGE_SIZE"),
QUERY_TYPE_MAX_ENUM = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_MAX_ENUM"),
DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"),
DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT"),
DISPLAY_EVENT_TYPE_END_RANGE_EXT = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT"),
DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT"),
DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT"),
PRESENT_MODE_IMMEDIATE_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_IMMEDIATE_KHR"),
PRESENT_MODE_MAILBOX_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_MAILBOX_KHR"),
PRESENT_MODE_FIFO_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_FIFO_KHR"),
PRESENT_MODE_FIFO_RELAXED_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_FIFO_RELAXED_KHR"),
PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"),
PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"),
PRESENT_MODE_BEGIN_RANGE_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_BEGIN_RANGE_KHR"),
PRESENT_MODE_END_RANGE_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_END_RANGE_KHR"),
PRESENT_MODE_RANGE_SIZE_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_RANGE_SIZE_KHR"),
PRESENT_MODE_MAX_ENUM_KHR = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_MAX_ENUM_KHR"),
BUFFER_CREATE_SPARSE_BINDING_BIT = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
BUFFER_CREATE_SPARSE_RESIDENCY_BIT = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
BUFFER_CREATE_SPARSE_ALIASED_BIT = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
BUFFER_CREATE_PROTECTED_BIT = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_PROTECTED_BIT"),
BUFFER_CREATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
ACCESS_INDIRECT_COMMAND_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
ACCESS_INDEX_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_INDEX_READ_BIT"),
ACCESS_VERTEX_ATTRIBUTE_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
ACCESS_UNIFORM_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_UNIFORM_READ_BIT"),
ACCESS_INPUT_ATTACHMENT_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
ACCESS_SHADER_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_SHADER_READ_BIT"),
ACCESS_SHADER_WRITE_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_SHADER_WRITE_BIT"),
ACCESS_COLOR_ATTACHMENT_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
ACCESS_COLOR_ATTACHMENT_WRITE_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
ACCESS_TRANSFER_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_TRANSFER_READ_BIT"),
ACCESS_TRANSFER_WRITE_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_TRANSFER_WRITE_BIT"),
ACCESS_HOST_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_HOST_READ_BIT"),
ACCESS_HOST_WRITE_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_HOST_WRITE_BIT"),
ACCESS_MEMORY_READ_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_MEMORY_READ_BIT"),
ACCESS_MEMORY_WRITE_BIT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_MEMORY_WRITE_BIT"),
ACCESS_COMMAND_PROCESS_READ_BIT_NVX = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"),
ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"),
ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
ACCESS_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_FLAG_BITS_MAX_ENUM"),
EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = ffi.cast("enum VkExternalSemaphoreFeatureFlagBits", "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"),
EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = ffi.cast("enum VkExternalSemaphoreFeatureFlagBits", "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"),
EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = ffi.cast("enum VkExternalSemaphoreFeatureFlagBits", "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"),
EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = ffi.cast("enum VkExternalSemaphoreFeatureFlagBits", "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"),
EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkExternalSemaphoreFeatureFlagBits", "VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM"),
INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"),
INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"),
INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"),
INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"),
INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX"),
FORMAT_FEATURE_SAMPLED_IMAGE_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
FORMAT_FEATURE_STORAGE_IMAGE_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
FORMAT_FEATURE_VERTEX_BUFFER_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
FORMAT_FEATURE_BLIT_SRC_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
FORMAT_FEATURE_BLIT_DST_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
FORMAT_FEATURE_TRANSFER_SRC_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"),
FORMAT_FEATURE_TRANSFER_DST_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"),
FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"),
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"),
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"),
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"),
FORMAT_FEATURE_DISJOINT_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_DISJOINT_BIT"),
FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"),
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"),
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"),
FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"),
FORMAT_FEATURE_DISJOINT_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_DISJOINT_BIT_KHR"),
FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR"),
FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM"),
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"),
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"),
EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"),
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"),
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"),
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"),
EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = ffi.cast("enum VkCommandPoolResetFlagBits", "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkCommandPoolResetFlagBits", "VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM"),
MEMORY_HEAP_DEVICE_LOCAL_BIT = ffi.cast("enum VkMemoryHeapFlagBits", "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
MEMORY_HEAP_MULTI_INSTANCE_BIT = ffi.cast("enum VkMemoryHeapFlagBits", "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"),
MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = ffi.cast("enum VkMemoryHeapFlagBits", "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"),
MEMORY_HEAP_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkMemoryHeapFlagBits", "VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM"),
OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = ffi.cast("enum VkObjectEntryUsageFlagBitsNVX", "VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"),
OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = ffi.cast("enum VkObjectEntryUsageFlagBitsNVX", "VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"),
OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = ffi.cast("enum VkObjectEntryUsageFlagBitsNVX", "VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX"),
INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX"),
SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY"),
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY"),
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709"),
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601"),
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020"),
SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR"),
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR"),
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR"),
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR"),
SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR"),
SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE"),
SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE"),
SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE"),
SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM"),
DEVICE_QUEUE_CREATE_PROTECTED_BIT = ffi.cast("enum VkDeviceQueueCreateFlagBits", "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkDeviceQueueCreateFlagBits", "VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM"),
STRUCTURE_TYPE_APPLICATION_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_APPLICATION_INFO"),
STRUCTURE_TYPE_INSTANCE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"),
STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"),
STRUCTURE_TYPE_DEVICE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"),
STRUCTURE_TYPE_SUBMIT_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SUBMIT_INFO"),
STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"),
STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"),
STRUCTURE_TYPE_BIND_SPARSE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"),
STRUCTURE_TYPE_FENCE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"),
STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"),
STRUCTURE_TYPE_EVENT_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"),
STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"),
STRUCTURE_TYPE_BUFFER_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"),
STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"),
STRUCTURE_TYPE_IMAGE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"),
STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"),
STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"),
STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"),
STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"),
STRUCTURE_TYPE_SAMPLER_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"),
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"),
STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"),
STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"),
STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"),
STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"),
STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"),
STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"),
STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"),
STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"),
STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"),
STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"),
STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"),
STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"),
STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"),
STRUCTURE_TYPE_MEMORY_BARRIER = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_BARRIER"),
STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"),
STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"),
STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"),
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES"),
STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"),
STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"),
STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"),
STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"),
STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"),
STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"),
STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"),
STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"),
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"),
STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"),
STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2"),
STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2"),
STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2"),
STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2"),
STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2"),
STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2"),
STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2"),
STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2"),
STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"),
STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"),
STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"),
STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"),
STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"),
STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"),
STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"),
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"),
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"),
STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"),
STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"),
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"),
STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"),
STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"),
STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES"),
STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"),
STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"),
STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"),
STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"),
STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"),
STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"),
STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES"),
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"),
STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PRESENT_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"),
STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"),
STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"),
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"),
STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"),
STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"),
STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"),
STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"),
STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"),
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"),
STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"),
STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"),
STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"),
STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"),
STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"),
STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"),
STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"),
STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"),
STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"),
STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV"),
STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV"),
STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV"),
STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"),
STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"),
STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"),
STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"),
STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"),
STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"),
STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"),
STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"),
STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"),
STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"),
STRUCTURE_TYPE_PRESENT_REGIONS_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"),
STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"),
STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"),
STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"),
STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"),
STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"),
STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"),
STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"),
STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT"),
STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"),
STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"),
STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"),
STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"),
STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"),
STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"),
STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"),
STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"),
STRUCTURE_TYPE_HDR_METADATA_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"),
STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"),
STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"),
STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"),
STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"),
STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"),
STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"),
STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"),
STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"),
STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"),
STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"),
STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"),
STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"),
STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"),
STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"),
STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"),
STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"),
STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"),
STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"),
STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"),
STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"),
STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"),
STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"),
STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"),
STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"),
STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"),
STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"),
STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"),
STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"),
STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"),
STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"),
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"),
STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"),
STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"),
STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"),
STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"),
STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"),
STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"),
STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR"),
STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR"),
STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR"),
STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR"),
STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR"),
STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR"),
STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR"),
STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR"),
STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR"),
STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR"),
STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR"),
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR"),
STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR"),
STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR"),
STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR"),
STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR"),
STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR"),
STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR"),
STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR"),
STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR"),
STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR"),
STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR"),
STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR"),
STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR"),
STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR"),
STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR"),
STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR"),
STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR"),
STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR"),
STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR"),
STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR"),
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR"),
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR"),
STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR"),
STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR"),
STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR"),
STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR"),
STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR"),
STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR"),
STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR"),
STRUCTURE_TYPE_BEGIN_RANGE = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BEGIN_RANGE"),
STRUCTURE_TYPE_END_RANGE = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_END_RANGE"),
STRUCTURE_TYPE_RANGE_SIZE = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RANGE_SIZE"),
STRUCTURE_TYPE_MAX_ENUM = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MAX_ENUM"),
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = ffi.cast("enum VkExternalMemoryFeatureFlagBitsNV", "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"),
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = ffi.cast("enum VkExternalMemoryFeatureFlagBitsNV", "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"),
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = ffi.cast("enum VkExternalMemoryFeatureFlagBitsNV", "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"),
EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = ffi.cast("enum VkExternalMemoryFeatureFlagBitsNV", "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV"),
VERTEX_INPUT_RATE_VERTEX = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_VERTEX"),
VERTEX_INPUT_RATE_INSTANCE = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_INSTANCE"),
VERTEX_INPUT_RATE_BEGIN_RANGE = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_BEGIN_RANGE"),
VERTEX_INPUT_RATE_END_RANGE = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_END_RANGE"),
VERTEX_INPUT_RATE_RANGE_SIZE = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_RANGE_SIZE"),
VERTEX_INPUT_RATE_MAX_ENUM = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_MAX_ENUM"),
CHROMA_LOCATION_COSITED_EVEN = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_COSITED_EVEN"),
CHROMA_LOCATION_MIDPOINT = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_MIDPOINT"),
CHROMA_LOCATION_COSITED_EVEN_KHR = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_COSITED_EVEN_KHR"),
CHROMA_LOCATION_MIDPOINT_KHR = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_MIDPOINT_KHR"),
CHROMA_LOCATION_BEGIN_RANGE = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_BEGIN_RANGE"),
CHROMA_LOCATION_END_RANGE = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_END_RANGE"),
CHROMA_LOCATION_RANGE_SIZE = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_RANGE_SIZE"),
CHROMA_LOCATION_MAX_ENUM = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_MAX_ENUM"),
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV"),
SHADER_INFO_TYPE_STATISTICS_AMD = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_STATISTICS_AMD"),
SHADER_INFO_TYPE_BINARY_AMD = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_BINARY_AMD"),
SHADER_INFO_TYPE_DISASSEMBLY_AMD = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"),
SHADER_INFO_TYPE_BEGIN_RANGE_AMD = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD"),
SHADER_INFO_TYPE_END_RANGE_AMD = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_END_RANGE_AMD"),
SHADER_INFO_TYPE_RANGE_SIZE_AMD = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD"),
SHADER_INFO_TYPE_MAX_ENUM_AMD = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_MAX_ENUM_AMD"),
RASTERIZATION_ORDER_STRICT_AMD = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_STRICT_AMD"),
RASTERIZATION_ORDER_RELAXED_AMD = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_RELAXED_AMD"),
RASTERIZATION_ORDER_BEGIN_RANGE_AMD = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD"),
RASTERIZATION_ORDER_END_RANGE_AMD = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_END_RANGE_AMD"),
RASTERIZATION_ORDER_RANGE_SIZE_AMD = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD"),
RASTERIZATION_ORDER_MAX_ENUM_AMD = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_MAX_ENUM_AMD"),
IMAGE_TILING_OPTIMAL = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_OPTIMAL"),
IMAGE_TILING_LINEAR = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_LINEAR"),
IMAGE_TILING_BEGIN_RANGE = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_BEGIN_RANGE"),
IMAGE_TILING_END_RANGE = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_END_RANGE"),
IMAGE_TILING_RANGE_SIZE = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_RANGE_SIZE"),
IMAGE_TILING_MAX_ENUM = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_MAX_ENUM"),
DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"),
DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"),
DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"),
DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"),
DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"),
DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"),
DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"),
DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"),
DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"),
DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"),
DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"),
DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"),
DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"),
DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"),
DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"),
DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"),
DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"),
DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"),
DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"),
DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT"),
DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT"),
DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT"),
DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT"),
FORMAT_UNDEFINED = ffi.cast("enum VkFormat", "VK_FORMAT_UNDEFINED"),
FORMAT_R4G4_UNORM_PACK8 = ffi.cast("enum VkFormat", "VK_FORMAT_R4G4_UNORM_PACK8"),
FORMAT_R4G4B4A4_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R4G4B4A4_UNORM_PACK16"),
FORMAT_B4G4R4A4_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_B4G4R4A4_UNORM_PACK16"),
FORMAT_R5G6B5_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R5G6B5_UNORM_PACK16"),
FORMAT_B5G6R5_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_B5G6R5_UNORM_PACK16"),
FORMAT_R5G5B5A1_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R5G5B5A1_UNORM_PACK16"),
FORMAT_B5G5R5A1_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_B5G5R5A1_UNORM_PACK16"),
FORMAT_A1R5G5B5_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_A1R5G5B5_UNORM_PACK16"),
FORMAT_R8_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R8_UNORM"),
FORMAT_R8_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R8_SNORM"),
FORMAT_R8_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R8_USCALED"),
FORMAT_R8_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R8_SSCALED"),
FORMAT_R8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R8_UINT"),
FORMAT_R8_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R8_SINT"),
FORMAT_R8_SRGB = ffi.cast("enum VkFormat", "VK_FORMAT_R8_SRGB"),
FORMAT_R8G8_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_UNORM"),
FORMAT_R8G8_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_SNORM"),
FORMAT_R8G8_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_USCALED"),
FORMAT_R8G8_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_SSCALED"),
FORMAT_R8G8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_UINT"),
FORMAT_R8G8_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_SINT"),
FORMAT_R8G8_SRGB = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_SRGB"),
FORMAT_R8G8B8_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_UNORM"),
FORMAT_R8G8B8_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_SNORM"),
FORMAT_R8G8B8_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_USCALED"),
FORMAT_R8G8B8_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_SSCALED"),
FORMAT_R8G8B8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_UINT"),
FORMAT_R8G8B8_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_SINT"),
FORMAT_R8G8B8_SRGB = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_SRGB"),
FORMAT_B8G8R8_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_UNORM"),
FORMAT_B8G8R8_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_SNORM"),
FORMAT_B8G8R8_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_USCALED"),
FORMAT_B8G8R8_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_SSCALED"),
FORMAT_B8G8R8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_UINT"),
FORMAT_B8G8R8_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_SINT"),
FORMAT_B8G8R8_SRGB = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_SRGB"),
FORMAT_R8G8B8A8_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_UNORM"),
FORMAT_R8G8B8A8_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_SNORM"),
FORMAT_R8G8B8A8_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_USCALED"),
FORMAT_R8G8B8A8_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_SSCALED"),
FORMAT_R8G8B8A8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_UINT"),
FORMAT_R8G8B8A8_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_SINT"),
FORMAT_R8G8B8A8_SRGB = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_SRGB"),
FORMAT_B8G8R8A8_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_UNORM"),
FORMAT_B8G8R8A8_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_SNORM"),
FORMAT_B8G8R8A8_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_USCALED"),
FORMAT_B8G8R8A8_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_SSCALED"),
FORMAT_B8G8R8A8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_UINT"),
FORMAT_B8G8R8A8_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_SINT"),
FORMAT_B8G8R8A8_SRGB = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_SRGB"),
FORMAT_A8B8G8R8_UNORM_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_UNORM_PACK32"),
FORMAT_A8B8G8R8_SNORM_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_SNORM_PACK32"),
FORMAT_A8B8G8R8_USCALED_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_USCALED_PACK32"),
FORMAT_A8B8G8R8_SSCALED_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"),
FORMAT_A8B8G8R8_UINT_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_UINT_PACK32"),
FORMAT_A8B8G8R8_SINT_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_SINT_PACK32"),
FORMAT_A8B8G8R8_SRGB_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_SRGB_PACK32"),
FORMAT_A2R10G10B10_UNORM_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_UNORM_PACK32"),
FORMAT_A2R10G10B10_SNORM_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_SNORM_PACK32"),
FORMAT_A2R10G10B10_USCALED_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_USCALED_PACK32"),
FORMAT_A2R10G10B10_SSCALED_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"),
FORMAT_A2R10G10B10_UINT_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_UINT_PACK32"),
FORMAT_A2R10G10B10_SINT_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_SINT_PACK32"),
FORMAT_A2B10G10R10_UNORM_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_UNORM_PACK32"),
FORMAT_A2B10G10R10_SNORM_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_SNORM_PACK32"),
FORMAT_A2B10G10R10_USCALED_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_USCALED_PACK32"),
FORMAT_A2B10G10R10_SSCALED_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"),
FORMAT_A2B10G10R10_UINT_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_UINT_PACK32"),
FORMAT_A2B10G10R10_SINT_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_SINT_PACK32"),
FORMAT_R16_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R16_UNORM"),
FORMAT_R16_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R16_SNORM"),
FORMAT_R16_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R16_USCALED"),
FORMAT_R16_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R16_SSCALED"),
FORMAT_R16_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R16_UINT"),
FORMAT_R16_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R16_SINT"),
FORMAT_R16_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R16_SFLOAT"),
FORMAT_R16G16_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_UNORM"),
FORMAT_R16G16_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_SNORM"),
FORMAT_R16G16_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_USCALED"),
FORMAT_R16G16_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_SSCALED"),
FORMAT_R16G16_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_UINT"),
FORMAT_R16G16_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_SINT"),
FORMAT_R16G16_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_SFLOAT"),
FORMAT_R16G16B16_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_UNORM"),
FORMAT_R16G16B16_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_SNORM"),
FORMAT_R16G16B16_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_USCALED"),
FORMAT_R16G16B16_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_SSCALED"),
FORMAT_R16G16B16_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_UINT"),
FORMAT_R16G16B16_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_SINT"),
FORMAT_R16G16B16_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_SFLOAT"),
FORMAT_R16G16B16A16_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_UNORM"),
FORMAT_R16G16B16A16_SNORM = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_SNORM"),
FORMAT_R16G16B16A16_USCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_USCALED"),
FORMAT_R16G16B16A16_SSCALED = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_SSCALED"),
FORMAT_R16G16B16A16_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_UINT"),
FORMAT_R16G16B16A16_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_SINT"),
FORMAT_R16G16B16A16_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_SFLOAT"),
FORMAT_R32_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R32_UINT"),
FORMAT_R32_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R32_SINT"),
FORMAT_R32_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R32_SFLOAT"),
FORMAT_R32G32_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32_UINT"),
FORMAT_R32G32_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32_SINT"),
FORMAT_R32G32_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32_SFLOAT"),
FORMAT_R32G32B32_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32_UINT"),
FORMAT_R32G32B32_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32_SINT"),
FORMAT_R32G32B32_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32_SFLOAT"),
FORMAT_R32G32B32A32_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32A32_UINT"),
FORMAT_R32G32B32A32_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32A32_SINT"),
FORMAT_R32G32B32A32_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32A32_SFLOAT"),
FORMAT_R64_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R64_UINT"),
FORMAT_R64_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R64_SINT"),
FORMAT_R64_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R64_SFLOAT"),
FORMAT_R64G64_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64_UINT"),
FORMAT_R64G64_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64_SINT"),
FORMAT_R64G64_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64_SFLOAT"),
FORMAT_R64G64B64_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64_UINT"),
FORMAT_R64G64B64_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64_SINT"),
FORMAT_R64G64B64_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64_SFLOAT"),
FORMAT_R64G64B64A64_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64A64_UINT"),
FORMAT_R64G64B64A64_SINT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64A64_SINT"),
FORMAT_R64G64B64A64_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64A64_SFLOAT"),
FORMAT_B10G11R11_UFLOAT_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_B10G11R11_UFLOAT_PACK32"),
FORMAT_E5B9G9R9_UFLOAT_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"),
FORMAT_D16_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_D16_UNORM"),
FORMAT_X8_D24_UNORM_PACK32 = ffi.cast("enum VkFormat", "VK_FORMAT_X8_D24_UNORM_PACK32"),
FORMAT_D32_SFLOAT = ffi.cast("enum VkFormat", "VK_FORMAT_D32_SFLOAT"),
FORMAT_S8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_S8_UINT"),
FORMAT_D16_UNORM_S8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_D16_UNORM_S8_UINT"),
FORMAT_D24_UNORM_S8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_D24_UNORM_S8_UINT"),
FORMAT_D32_SFLOAT_S8_UINT = ffi.cast("enum VkFormat", "VK_FORMAT_D32_SFLOAT_S8_UINT"),
FORMAT_BC1_RGB_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC1_RGB_UNORM_BLOCK"),
FORMAT_BC1_RGB_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC1_RGB_SRGB_BLOCK"),
FORMAT_BC1_RGBA_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC1_RGBA_UNORM_BLOCK"),
FORMAT_BC1_RGBA_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC1_RGBA_SRGB_BLOCK"),
FORMAT_BC2_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC2_UNORM_BLOCK"),
FORMAT_BC2_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC2_SRGB_BLOCK"),
FORMAT_BC3_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC3_UNORM_BLOCK"),
FORMAT_BC3_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC3_SRGB_BLOCK"),
FORMAT_BC4_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC4_UNORM_BLOCK"),
FORMAT_BC4_SNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC4_SNORM_BLOCK"),
FORMAT_BC5_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC5_UNORM_BLOCK"),
FORMAT_BC5_SNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC5_SNORM_BLOCK"),
FORMAT_BC6H_UFLOAT_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC6H_UFLOAT_BLOCK"),
FORMAT_BC6H_SFLOAT_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC6H_SFLOAT_BLOCK"),
FORMAT_BC7_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC7_UNORM_BLOCK"),
FORMAT_BC7_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_BC7_SRGB_BLOCK"),
FORMAT_ETC2_R8G8B8_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"),
FORMAT_ETC2_R8G8B8_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"),
FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"),
FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"),
FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"),
FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"),
FORMAT_EAC_R11_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_EAC_R11_UNORM_BLOCK"),
FORMAT_EAC_R11_SNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_EAC_R11_SNORM_BLOCK"),
FORMAT_EAC_R11G11_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_EAC_R11G11_UNORM_BLOCK"),
FORMAT_EAC_R11G11_SNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_EAC_R11G11_SNORM_BLOCK"),
FORMAT_ASTC_4x4_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"),
FORMAT_ASTC_4x4_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"),
FORMAT_ASTC_5x4_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"),
FORMAT_ASTC_5x4_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"),
FORMAT_ASTC_5x5_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"),
FORMAT_ASTC_5x5_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"),
FORMAT_ASTC_6x5_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"),
FORMAT_ASTC_6x5_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"),
FORMAT_ASTC_6x6_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"),
FORMAT_ASTC_6x6_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"),
FORMAT_ASTC_8x5_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x5_UNORM_BLOCK"),
FORMAT_ASTC_8x5_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x5_SRGB_BLOCK"),
FORMAT_ASTC_8x6_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x6_UNORM_BLOCK"),
FORMAT_ASTC_8x6_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x6_SRGB_BLOCK"),
FORMAT_ASTC_8x8_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x8_UNORM_BLOCK"),
FORMAT_ASTC_8x8_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x8_SRGB_BLOCK"),
FORMAT_ASTC_10x5_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"),
FORMAT_ASTC_10x5_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"),
FORMAT_ASTC_10x6_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"),
FORMAT_ASTC_10x6_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"),
FORMAT_ASTC_10x8_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"),
FORMAT_ASTC_10x8_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"),
FORMAT_ASTC_10x10_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"),
FORMAT_ASTC_10x10_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"),
FORMAT_ASTC_12x10_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"),
FORMAT_ASTC_12x10_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"),
FORMAT_ASTC_12x12_UNORM_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"),
FORMAT_ASTC_12x12_SRGB_BLOCK = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"),
FORMAT_G8B8G8R8_422_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G8B8G8R8_422_UNORM"),
FORMAT_B8G8R8G8_422_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8G8_422_UNORM"),
FORMAT_G8_B8_R8_3PLANE_420_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM"),
FORMAT_G8_B8R8_2PLANE_420_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM"),
FORMAT_G8_B8_R8_3PLANE_422_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM"),
FORMAT_G8_B8R8_2PLANE_422_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM"),
FORMAT_G8_B8_R8_3PLANE_444_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM"),
FORMAT_R10X6_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6_UNORM_PACK16"),
FORMAT_R10X6G10X6_UNORM_2PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6G10X6_UNORM_2PACK16"),
FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16"),
FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16"),
FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16"),
FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16"),
FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16"),
FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16"),
FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16"),
FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16"),
FORMAT_R12X4_UNORM_PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4_UNORM_PACK16"),
FORMAT_R12X4G12X4_UNORM_2PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4G12X4_UNORM_2PACK16"),
FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16"),
FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16"),
FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16"),
FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16"),
FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16"),
FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16"),
FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16"),
FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16"),
FORMAT_G16B16G16R16_422_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G16B16G16R16_422_UNORM"),
FORMAT_B16G16R16G16_422_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_B16G16R16G16_422_UNORM"),
FORMAT_G16_B16_R16_3PLANE_420_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM"),
FORMAT_G16_B16R16_2PLANE_420_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM"),
FORMAT_G16_B16_R16_3PLANE_422_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM"),
FORMAT_G16_B16R16_2PLANE_422_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM"),
FORMAT_G16_B16_R16_3PLANE_444_UNORM = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM"),
FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"),
FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"),
FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"),
FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"),
FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"),
FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"),
FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"),
FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"),
FORMAT_G8B8G8R8_422_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G8B8G8R8_422_UNORM_KHR"),
FORMAT_B8G8R8G8_422_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8G8_422_UNORM_KHR"),
FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR"),
FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR"),
FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR"),
FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR"),
FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR"),
FORMAT_R10X6_UNORM_PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6_UNORM_PACK16_KHR"),
FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR"),
FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR"),
FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR"),
FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR"),
FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR"),
FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR"),
FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR"),
FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR"),
FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR"),
FORMAT_R12X4_UNORM_PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4_UNORM_PACK16_KHR"),
FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR"),
FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR"),
FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR"),
FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR"),
FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR"),
FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR"),
FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR"),
FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR"),
FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR"),
FORMAT_G16B16G16R16_422_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G16B16G16R16_422_UNORM_KHR"),
FORMAT_B16G16R16G16_422_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_B16G16R16G16_422_UNORM_KHR"),
FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR"),
FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR"),
FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR"),
FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR"),
FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR"),
FORMAT_BEGIN_RANGE = ffi.cast("enum VkFormat", "VK_FORMAT_BEGIN_RANGE"),
FORMAT_END_RANGE = ffi.cast("enum VkFormat", "VK_FORMAT_END_RANGE"),
FORMAT_RANGE_SIZE = ffi.cast("enum VkFormat", "VK_FORMAT_RANGE_SIZE"),
FORMAT_MAX_ENUM = ffi.cast("enum VkFormat", "VK_FORMAT_MAX_ENUM"),
ATTACHMENT_STORE_OP_STORE = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_STORE"),
ATTACHMENT_STORE_OP_DONT_CARE = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_DONT_CARE"),
ATTACHMENT_STORE_OP_BEGIN_RANGE = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_BEGIN_RANGE"),
ATTACHMENT_STORE_OP_END_RANGE = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_END_RANGE"),
ATTACHMENT_STORE_OP_RANGE_SIZE = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_RANGE_SIZE"),
ATTACHMENT_STORE_OP_MAX_ENUM = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_MAX_ENUM"),
LOGIC_OP_CLEAR = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_CLEAR"),
LOGIC_OP_AND = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_AND"),
LOGIC_OP_AND_REVERSE = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_AND_REVERSE"),
LOGIC_OP_COPY = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_COPY"),
LOGIC_OP_AND_INVERTED = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_AND_INVERTED"),
LOGIC_OP_NO_OP = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_NO_OP"),
LOGIC_OP_XOR = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_XOR"),
LOGIC_OP_OR = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_OR"),
LOGIC_OP_NOR = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_NOR"),
LOGIC_OP_EQUIVALENT = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_EQUIVALENT"),
LOGIC_OP_INVERT = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_INVERT"),
LOGIC_OP_OR_REVERSE = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_OR_REVERSE"),
LOGIC_OP_COPY_INVERTED = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_COPY_INVERTED"),
LOGIC_OP_OR_INVERTED = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_OR_INVERTED"),
LOGIC_OP_NAND = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_NAND"),
LOGIC_OP_SET = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_SET"),
LOGIC_OP_BEGIN_RANGE = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_BEGIN_RANGE"),
LOGIC_OP_END_RANGE = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_END_RANGE"),
LOGIC_OP_RANGE_SIZE = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_RANGE_SIZE"),
LOGIC_OP_MAX_ENUM = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_MAX_ENUM"),
ATTACHMENT_LOAD_OP_LOAD = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_LOAD"),
ATTACHMENT_LOAD_OP_CLEAR = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_CLEAR"),
ATTACHMENT_LOAD_OP_DONT_CARE = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_DONT_CARE"),
ATTACHMENT_LOAD_OP_BEGIN_RANGE = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE"),
ATTACHMENT_LOAD_OP_END_RANGE = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_END_RANGE"),
ATTACHMENT_LOAD_OP_RANGE_SIZE = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_RANGE_SIZE"),
ATTACHMENT_LOAD_OP_MAX_ENUM = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_MAX_ENUM"),
SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = ffi.cast("enum VkSwapchainCreateFlagBitsKHR", "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = ffi.cast("enum VkSwapchainCreateFlagBitsKHR", "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = ffi.cast("enum VkSwapchainCreateFlagBitsKHR", "VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR"),
COMPOSITE_ALPHA_OPAQUE_BIT_KHR = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
COMPOSITE_ALPHA_INHERIT_BIT_KHR = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
IMAGE_ASPECT_COLOR_BIT = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_COLOR_BIT"),
IMAGE_ASPECT_DEPTH_BIT = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_DEPTH_BIT"),
IMAGE_ASPECT_STENCIL_BIT = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_STENCIL_BIT"),
IMAGE_ASPECT_METADATA_BIT = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_METADATA_BIT"),
IMAGE_ASPECT_PLANE_0_BIT = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_0_BIT"),
IMAGE_ASPECT_PLANE_1_BIT = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_1_BIT"),
IMAGE_ASPECT_PLANE_2_BIT = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_2_BIT"),
IMAGE_ASPECT_PLANE_0_BIT_KHR = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"),
IMAGE_ASPECT_PLANE_1_BIT_KHR = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"),
IMAGE_ASPECT_PLANE_2_BIT_KHR = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"),
IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM"),
POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES"),
POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY"),
POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR"),
POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR"),
POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE"),
POINT_CLIPPING_BEHAVIOR_END_RANGE = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_END_RANGE"),
POINT_CLIPPING_BEHAVIOR_RANGE_SIZE = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE"),
POINT_CLIPPING_BEHAVIOR_MAX_ENUM = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
POLYGON_MODE_FILL = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_FILL"),
POLYGON_MODE_LINE = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_LINE"),
POLYGON_MODE_POINT = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_POINT"),
POLYGON_MODE_FILL_RECTANGLE_NV = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_FILL_RECTANGLE_NV"),
POLYGON_MODE_BEGIN_RANGE = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_BEGIN_RANGE"),
POLYGON_MODE_END_RANGE = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_END_RANGE"),
POLYGON_MODE_RANGE_SIZE = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_RANGE_SIZE"),
POLYGON_MODE_MAX_ENUM = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_MAX_ENUM"),
COLOR_SPACE_SRGB_NONLINEAR_KHR = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"),
COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"),
COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"),
COLOR_SPACE_DCI_P3_LINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT"),
COLOR_SPACE_DCI_P3_NONLINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"),
COLOR_SPACE_BT709_LINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_BT709_LINEAR_EXT"),
COLOR_SPACE_BT709_NONLINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_BT709_NONLINEAR_EXT"),
COLOR_SPACE_BT2020_LINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_BT2020_LINEAR_EXT"),
COLOR_SPACE_HDR10_ST2084_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_HDR10_ST2084_EXT"),
COLOR_SPACE_DOLBYVISION_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_DOLBYVISION_EXT"),
COLOR_SPACE_HDR10_HLG_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_HDR10_HLG_EXT"),
COLOR_SPACE_ADOBERGB_LINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"),
COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"),
COLOR_SPACE_PASS_THROUGH_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_PASS_THROUGH_EXT"),
COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"),
COLOR_SPACE_BEGIN_RANGE_KHR = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_BEGIN_RANGE_KHR"),
COLOR_SPACE_END_RANGE_KHR = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_END_RANGE_KHR"),
COLOR_SPACE_RANGE_SIZE_KHR = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_RANGE_SIZE_KHR"),
COLOR_SPACE_MAX_ENUM_KHR = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_MAX_ENUM_KHR"),
IMAGE_TYPE_1D = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_1D"),
IMAGE_TYPE_2D = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_2D"),
IMAGE_TYPE_3D = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_3D"),
IMAGE_TYPE_BEGIN_RANGE = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_BEGIN_RANGE"),
IMAGE_TYPE_END_RANGE = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_END_RANGE"),
IMAGE_TYPE_RANGE_SIZE = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_RANGE_SIZE"),
IMAGE_TYPE_MAX_ENUM = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_MAX_ENUM"),
SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = ffi.cast("enum VkSparseImageFormatFlagBits", "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = ffi.cast("enum VkSparseImageFormatFlagBits", "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = ffi.cast("enum VkSparseImageFormatFlagBits", "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkSparseImageFormatFlagBits", "VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM"),
BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"),
BORDER_COLOR_INT_TRANSPARENT_BLACK = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"),
BORDER_COLOR_FLOAT_OPAQUE_BLACK = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"),
BORDER_COLOR_INT_OPAQUE_BLACK = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_INT_OPAQUE_BLACK"),
BORDER_COLOR_FLOAT_OPAQUE_WHITE = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"),
BORDER_COLOR_INT_OPAQUE_WHITE = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_INT_OPAQUE_WHITE"),
BORDER_COLOR_BEGIN_RANGE = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_BEGIN_RANGE"),
BORDER_COLOR_END_RANGE = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_END_RANGE"),
BORDER_COLOR_RANGE_SIZE = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_RANGE_SIZE"),
BORDER_COLOR_MAX_ENUM = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_MAX_ENUM"),
SEMAPHORE_IMPORT_TEMPORARY_BIT = ffi.cast("enum VkSemaphoreImportFlagBits", "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"),
SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = ffi.cast("enum VkSemaphoreImportFlagBits", "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"),
SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkSemaphoreImportFlagBits", "VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM"),
MEMORY_ALLOCATE_DEVICE_MASK_BIT = ffi.cast("enum VkMemoryAllocateFlagBits", "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = ffi.cast("enum VkMemoryAllocateFlagBits", "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkMemoryAllocateFlagBits", "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
INTERNAL_ALLOCATION_TYPE_EXECUTABLE = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"),
INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE"),
INTERNAL_ALLOCATION_TYPE_END_RANGE = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_END_RANGE"),
INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE"),
INTERNAL_ALLOCATION_TYPE_MAX_ENUM = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM"),
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"),
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"),
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"),
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"),
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"),
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"),
EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
BLEND_OVERLAP_UNCORRELATED_EXT = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_UNCORRELATED_EXT"),
BLEND_OVERLAP_DISJOINT_EXT = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_DISJOINT_EXT"),
BLEND_OVERLAP_CONJOINT_EXT = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_CONJOINT_EXT"),
BLEND_OVERLAP_BEGIN_RANGE_EXT = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_BEGIN_RANGE_EXT"),
BLEND_OVERLAP_END_RANGE_EXT = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_END_RANGE_EXT"),
BLEND_OVERLAP_RANGE_SIZE_EXT = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_RANGE_SIZE_EXT"),
BLEND_OVERLAP_MAX_ENUM_EXT = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_MAX_ENUM_EXT"),
VALIDATION_CHECK_ALL_EXT = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_ALL_EXT"),
VALIDATION_CHECK_SHADERS_EXT = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_SHADERS_EXT"),
VALIDATION_CHECK_BEGIN_RANGE_EXT = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_BEGIN_RANGE_EXT"),
VALIDATION_CHECK_END_RANGE_EXT = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_END_RANGE_EXT"),
VALIDATION_CHECK_RANGE_SIZE_EXT = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_RANGE_SIZE_EXT"),
VALIDATION_CHECK_MAX_ENUM_EXT = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_MAX_ENUM_EXT"),
DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"),
DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT"),
DEVICE_EVENT_TYPE_END_RANGE_EXT = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_END_RANGE_EXT"),
DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT"),
DEVICE_EVENT_TYPE_MAX_ENUM_EXT = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT"),
QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM"),
COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = ffi.cast("enum VkCommandBufferResetFlagBits", "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkCommandBufferResetFlagBits", "VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM"),
FRONT_FACE_COUNTER_CLOCKWISE = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_COUNTER_CLOCKWISE"),
FRONT_FACE_CLOCKWISE = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_CLOCKWISE"),
FRONT_FACE_BEGIN_RANGE = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_BEGIN_RANGE"),
FRONT_FACE_END_RANGE = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_END_RANGE"),
FRONT_FACE_RANGE_SIZE = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_RANGE_SIZE"),
FRONT_FACE_MAX_ENUM = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_MAX_ENUM"),
DESCRIPTOR_TYPE_SAMPLER = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_SAMPLER"),
DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"),
DESCRIPTOR_TYPE_SAMPLED_IMAGE = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"),
DESCRIPTOR_TYPE_STORAGE_IMAGE = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"),
DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"),
DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"),
DESCRIPTOR_TYPE_UNIFORM_BUFFER = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"),
DESCRIPTOR_TYPE_STORAGE_BUFFER = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"),
DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"),
DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"),
DESCRIPTOR_TYPE_INPUT_ATTACHMENT = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"),
DESCRIPTOR_TYPE_BEGIN_RANGE = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_BEGIN_RANGE"),
DESCRIPTOR_TYPE_END_RANGE = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_END_RANGE"),
DESCRIPTOR_TYPE_RANGE_SIZE = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_RANGE_SIZE"),
DESCRIPTOR_TYPE_MAX_ENUM = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_MAX_ENUM"),
BLEND_OP_ADD = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_ADD"),
BLEND_OP_SUBTRACT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SUBTRACT"),
BLEND_OP_REVERSE_SUBTRACT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_REVERSE_SUBTRACT"),
BLEND_OP_MIN = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MIN"),
BLEND_OP_MAX = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MAX"),
BLEND_OP_ZERO_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_ZERO_EXT"),
BLEND_OP_SRC_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_EXT"),
BLEND_OP_DST_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_EXT"),
BLEND_OP_SRC_OVER_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_OVER_EXT"),
BLEND_OP_DST_OVER_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_OVER_EXT"),
BLEND_OP_SRC_IN_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_IN_EXT"),
BLEND_OP_DST_IN_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_IN_EXT"),
BLEND_OP_SRC_OUT_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_OUT_EXT"),
BLEND_OP_DST_OUT_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_OUT_EXT"),
BLEND_OP_SRC_ATOP_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_ATOP_EXT"),
BLEND_OP_DST_ATOP_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_ATOP_EXT"),
BLEND_OP_XOR_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_XOR_EXT"),
BLEND_OP_MULTIPLY_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MULTIPLY_EXT"),
BLEND_OP_SCREEN_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SCREEN_EXT"),
BLEND_OP_OVERLAY_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_OVERLAY_EXT"),
BLEND_OP_DARKEN_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DARKEN_EXT"),
BLEND_OP_LIGHTEN_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_LIGHTEN_EXT"),
BLEND_OP_COLORDODGE_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_COLORDODGE_EXT"),
BLEND_OP_COLORBURN_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_COLORBURN_EXT"),
BLEND_OP_HARDLIGHT_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HARDLIGHT_EXT"),
BLEND_OP_SOFTLIGHT_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SOFTLIGHT_EXT"),
BLEND_OP_DIFFERENCE_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DIFFERENCE_EXT"),
BLEND_OP_EXCLUSION_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_EXCLUSION_EXT"),
BLEND_OP_INVERT_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_INVERT_EXT"),
BLEND_OP_INVERT_RGB_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_INVERT_RGB_EXT"),
BLEND_OP_LINEARDODGE_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_LINEARDODGE_EXT"),
BLEND_OP_LINEARBURN_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_LINEARBURN_EXT"),
BLEND_OP_VIVIDLIGHT_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_VIVIDLIGHT_EXT"),
BLEND_OP_LINEARLIGHT_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_LINEARLIGHT_EXT"),
BLEND_OP_PINLIGHT_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PINLIGHT_EXT"),
BLEND_OP_HARDMIX_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HARDMIX_EXT"),
BLEND_OP_HSL_HUE_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HSL_HUE_EXT"),
BLEND_OP_HSL_SATURATION_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HSL_SATURATION_EXT"),
BLEND_OP_HSL_COLOR_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HSL_COLOR_EXT"),
BLEND_OP_HSL_LUMINOSITY_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HSL_LUMINOSITY_EXT"),
BLEND_OP_PLUS_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PLUS_EXT"),
BLEND_OP_PLUS_CLAMPED_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PLUS_CLAMPED_EXT"),
BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"),
BLEND_OP_PLUS_DARKER_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PLUS_DARKER_EXT"),
BLEND_OP_MINUS_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MINUS_EXT"),
BLEND_OP_MINUS_CLAMPED_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MINUS_CLAMPED_EXT"),
BLEND_OP_CONTRAST_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_CONTRAST_EXT"),
BLEND_OP_INVERT_OVG_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_INVERT_OVG_EXT"),
BLEND_OP_RED_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_RED_EXT"),
BLEND_OP_GREEN_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_GREEN_EXT"),
BLEND_OP_BLUE_EXT = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_BLUE_EXT"),
BLEND_OP_BEGIN_RANGE = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_BEGIN_RANGE"),
BLEND_OP_END_RANGE = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_END_RANGE"),
BLEND_OP_RANGE_SIZE = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_RANGE_SIZE"),
BLEND_OP_MAX_ENUM = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MAX_ENUM"),
BLEND_FACTOR_ZERO = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ZERO"),
BLEND_FACTOR_ONE = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE"),
BLEND_FACTOR_SRC_COLOR = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC_COLOR"),
BLEND_FACTOR_ONE_MINUS_SRC_COLOR = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"),
BLEND_FACTOR_DST_COLOR = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_DST_COLOR"),
BLEND_FACTOR_ONE_MINUS_DST_COLOR = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"),
BLEND_FACTOR_SRC_ALPHA = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC_ALPHA"),
BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"),
BLEND_FACTOR_DST_ALPHA = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_DST_ALPHA"),
BLEND_FACTOR_ONE_MINUS_DST_ALPHA = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"),
BLEND_FACTOR_CONSTANT_COLOR = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_CONSTANT_COLOR"),
BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"),
BLEND_FACTOR_CONSTANT_ALPHA = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_CONSTANT_ALPHA"),
BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"),
BLEND_FACTOR_SRC_ALPHA_SATURATE = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"),
BLEND_FACTOR_SRC1_COLOR = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC1_COLOR"),
BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"),
BLEND_FACTOR_SRC1_ALPHA = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC1_ALPHA"),
BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"),
BLEND_FACTOR_BEGIN_RANGE = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_BEGIN_RANGE"),
BLEND_FACTOR_END_RANGE = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_END_RANGE"),
BLEND_FACTOR_RANGE_SIZE = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_RANGE_SIZE"),
BLEND_FACTOR_MAX_ENUM = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_MAX_ENUM"),
PIPELINE_BIND_POINT_GRAPHICS = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_GRAPHICS"),
PIPELINE_BIND_POINT_COMPUTE = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_COMPUTE"),
PIPELINE_BIND_POINT_BEGIN_RANGE = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_BEGIN_RANGE"),
PIPELINE_BIND_POINT_END_RANGE = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_END_RANGE"),
PIPELINE_BIND_POINT_RANGE_SIZE = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_RANGE_SIZE"),
PIPELINE_BIND_POINT_MAX_ENUM = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_MAX_ENUM"),
SHARING_MODE_EXCLUSIVE = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_EXCLUSIVE"),
SHARING_MODE_CONCURRENT = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_CONCURRENT"),
SHARING_MODE_BEGIN_RANGE = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_BEGIN_RANGE"),
SHARING_MODE_END_RANGE = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_END_RANGE"),
SHARING_MODE_RANGE_SIZE = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_RANGE_SIZE"),
SHARING_MODE_MAX_ENUM = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_MAX_ENUM"),
SAMPLER_ADDRESS_MODE_REPEAT = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_REPEAT"),
SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"),
SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"),
SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"),
SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"),
SAMPLER_ADDRESS_MODE_BEGIN_RANGE = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE"),
SAMPLER_ADDRESS_MODE_END_RANGE = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_END_RANGE"),
SAMPLER_ADDRESS_MODE_RANGE_SIZE = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE"),
SAMPLER_ADDRESS_MODE_MAX_ENUM = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_MAX_ENUM"),
SPARSE_MEMORY_BIND_METADATA_BIT = ffi.cast("enum VkSparseMemoryBindFlagBits", "VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkSparseMemoryBindFlagBits", "VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM"),
PHYSICAL_DEVICE_TYPE_OTHER = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_OTHER"),
PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"),
PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"),
PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"),
PHYSICAL_DEVICE_TYPE_CPU = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_CPU"),
PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE"),
PHYSICAL_DEVICE_TYPE_END_RANGE = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_END_RANGE"),
PHYSICAL_DEVICE_TYPE_RANGE_SIZE = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE"),
PHYSICAL_DEVICE_TYPE_MAX_ENUM = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM"),
VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"),
VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"),
VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"),
VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"),
VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"),
VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"),
VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"),
VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"),
VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV"),
VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV"),
VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV"),
VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV"),
MEMORY_PROPERTY_DEVICE_LOCAL_BIT = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
MEMORY_PROPERTY_HOST_VISIBLE_BIT = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
MEMORY_PROPERTY_HOST_COHERENT_BIT = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
MEMORY_PROPERTY_HOST_CACHED_BIT = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
MEMORY_PROPERTY_PROTECTED_BIT = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_PROTECTED_BIT"),
MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM"),
SUBPASS_CONTENTS_INLINE = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_INLINE"),
SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"),
SUBPASS_CONTENTS_BEGIN_RANGE = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_BEGIN_RANGE"),
SUBPASS_CONTENTS_END_RANGE = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_END_RANGE"),
SUBPASS_CONTENTS_RANGE_SIZE = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_RANGE_SIZE"),
SUBPASS_CONTENTS_MAX_ENUM = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_MAX_ENUM"),
QUEUE_GRAPHICS_BIT = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_GRAPHICS_BIT"),
QUEUE_COMPUTE_BIT = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_COMPUTE_BIT"),
QUEUE_TRANSFER_BIT = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_TRANSFER_BIT"),
QUEUE_SPARSE_BINDING_BIT = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_SPARSE_BINDING_BIT"),
QUEUE_PROTECTED_BIT = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_PROTECTED_BIT"),
QUEUE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_FLAG_BITS_MAX_ENUM"),
COLOR_COMPONENT_R_BIT = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_R_BIT"),
COLOR_COMPONENT_G_BIT = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_G_BIT"),
COLOR_COMPONENT_B_BIT = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_B_BIT"),
COLOR_COMPONENT_A_BIT = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_A_BIT"),
COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM"),
COMPONENT_SWIZZLE_IDENTITY = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_IDENTITY"),
COMPONENT_SWIZZLE_ZERO = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_ZERO"),
COMPONENT_SWIZZLE_ONE = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_ONE"),
COMPONENT_SWIZZLE_R = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_R"),
COMPONENT_SWIZZLE_G = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_G"),
COMPONENT_SWIZZLE_B = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_B"),
COMPONENT_SWIZZLE_A = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_A"),
COMPONENT_SWIZZLE_BEGIN_RANGE = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_BEGIN_RANGE"),
COMPONENT_SWIZZLE_END_RANGE = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_END_RANGE"),
COMPONENT_SWIZZLE_RANGE_SIZE = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_RANGE_SIZE"),
COMPONENT_SWIZZLE_MAX_ENUM = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_MAX_ENUM"),
COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = ffi.cast("enum VkCommandBufferUsageFlagBits", "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = ffi.cast("enum VkCommandBufferUsageFlagBits", "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = ffi.cast("enum VkCommandBufferUsageFlagBits", "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkCommandBufferUsageFlagBits", "VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
STENCIL_OP_KEEP = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_KEEP"),
STENCIL_OP_ZERO = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_ZERO"),
STENCIL_OP_REPLACE = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_REPLACE"),
STENCIL_OP_INCREMENT_AND_CLAMP = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_INCREMENT_AND_CLAMP"),
STENCIL_OP_DECREMENT_AND_CLAMP = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_DECREMENT_AND_CLAMP"),
STENCIL_OP_INVERT = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_INVERT"),
STENCIL_OP_INCREMENT_AND_WRAP = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_INCREMENT_AND_WRAP"),
STENCIL_OP_DECREMENT_AND_WRAP = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_DECREMENT_AND_WRAP"),
STENCIL_OP_BEGIN_RANGE = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_BEGIN_RANGE"),
STENCIL_OP_END_RANGE = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_END_RANGE"),
STENCIL_OP_RANGE_SIZE = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_RANGE_SIZE"),
STENCIL_OP_MAX_ENUM = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_MAX_ENUM"),
STENCIL_FACE_FRONT_BIT = ffi.cast("enum VkStencilFaceFlagBits", "VK_STENCIL_FACE_FRONT_BIT"),
STENCIL_FACE_BACK_BIT = ffi.cast("enum VkStencilFaceFlagBits", "VK_STENCIL_FACE_BACK_BIT"),
STENCIL_FRONT_AND_BACK = ffi.cast("enum VkStencilFaceFlagBits", "VK_STENCIL_FRONT_AND_BACK"),
STENCIL_FACE_FLAG_BITS_MAX_ENUM = ffi.cast("enum VkStencilFaceFlagBits", "VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM"),
COMMAND_BUFFER_LEVEL_PRIMARY = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_PRIMARY"),
COMMAND_BUFFER_LEVEL_SECONDARY = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_SECONDARY"),
COMMAND_BUFFER_LEVEL_BEGIN_RANGE = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE"),
COMMAND_BUFFER_LEVEL_END_RANGE = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_END_RANGE"),
COMMAND_BUFFER_LEVEL_RANGE_SIZE = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE"),
COMMAND_BUFFER_LEVEL_MAX_ENUM = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_MAX_ENUM"),
DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"),
DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"),
DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT"),
DISCARD_RECTANGLE_MODE_END_RANGE_EXT = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT"),
DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT"),
DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT"),
SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT"),
SAMPLER_REDUCTION_MODE_MIN_EXT = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_MIN_EXT"),
SAMPLER_REDUCTION_MODE_MAX_EXT = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_MAX_EXT"),
SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT"),
SAMPLER_REDUCTION_MODE_END_RANGE_EXT = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT"),
SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT"),
SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT"),
blend_overlap = {
conjoint = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_CONJOINT_EXT"),
end_range = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_END_RANGE_EXT"),
disjoint = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_DISJOINT_EXT"),
max_enum = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_MAX_ENUM_EXT"),
uncorrelated = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_UNCORRELATED_EXT"),
begin_range = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_BEGIN_RANGE_EXT"),
range_size = ffi.cast("enum VkBlendOverlapEXT", "VK_BLEND_OVERLAP_RANGE_SIZE_EXT"),
},
front_face = {
counter_clockwise = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_COUNTER_CLOCKWISE"),
end_range = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_END_RANGE"),
max_enum = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_MAX_ENUM"),
begin_range = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_BEGIN_RANGE"),
range_size = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_RANGE_SIZE"),
clockwise = ffi.cast("enum VkFrontFace", "VK_FRONT_FACE_CLOCKWISE"),
},
object_type = {
swapchain = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SWAPCHAIN_KHR"),
instance = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_INSTANCE"),
end_range = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_END_RANGE"),
buffer = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_BUFFER"),
command_pool = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_COMMAND_POOL"),
fence = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_FENCE"),
pipeline_layout = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_PIPELINE_LAYOUT"),
event = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_EVENT"),
pipeline = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_PIPELINE"),
display = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DISPLAY_KHR"),
debug_utils_messenger = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"),
semaphore = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SEMAPHORE"),
indirect_commands_layout = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX"),
image_view = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_IMAGE_VIEW"),
max_enum = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_MAX_ENUM"),
sampler_ycbcr_conversion = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR"),
surface = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SURFACE_KHR"),
descriptor_update_template = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR"),
begin_range = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_BEGIN_RANGE"),
image = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_IMAGE"),
device_memory = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DEVICE_MEMORY"),
descriptor_set_layout = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"),
display_mode = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"),
buffer_view = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_BUFFER_VIEW"),
range_size = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_RANGE_SIZE"),
descriptor_set = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_SET"),
object_table = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_OBJECT_TABLE_NVX"),
query_pool = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_QUERY_POOL"),
framebuffer = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_FRAMEBUFFER"),
debug_report_callback = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"),
sampler = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SAMPLER"),
pipeline_cache = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_PIPELINE_CACHE"),
validation_cache = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"),
device = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DEVICE"),
physical_device = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_PHYSICAL_DEVICE"),
shader_module = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_SHADER_MODULE"),
unknown = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_UNKNOWN"),
queue = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_QUEUE"),
render_pass = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_RENDER_PASS"),
descriptor_pool = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_DESCRIPTOR_POOL"),
command_buffer = ffi.cast("enum VkObjectType", "VK_OBJECT_TYPE_COMMAND_BUFFER"),
},
display_plane_alpha = {
flag_bits_max_enum = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
per_pixel = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
global = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.display_plane_alpha[v] end return bit.bor(unpack(flags)) end,
per_pixel_premultiplied = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
opaque = ffi.cast("enum VkDisplayPlaneAlphaFlagBitsKHR", "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
},
attachment_store_op = {
end_range = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_END_RANGE"),
max_enum = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_MAX_ENUM"),
range_size = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_RANGE_SIZE"),
begin_range = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_BEGIN_RANGE"),
dont_care = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_DONT_CARE"),
store = ffi.cast("enum VkAttachmentStoreOp", "VK_ATTACHMENT_STORE_OP_STORE"),
},
descriptor_pool_create = {
update_after_bind = ffi.cast("enum VkDescriptorPoolCreateFlagBits", "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.descriptor_pool_create[v] end return bit.bor(unpack(flags)) end,
free_descriptor_set = ffi.cast("enum VkDescriptorPoolCreateFlagBits", "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
flag_bits_max_enum = ffi.cast("enum VkDescriptorPoolCreateFlagBits", "VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
},
access = {
color_attachment_write = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
transfer_write = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_TRANSFER_WRITE_BIT"),
memory_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_MEMORY_READ_BIT"),
shader_write = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_SHADER_WRITE_BIT"),
uniform_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_UNIFORM_READ_BIT"),
host_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_HOST_READ_BIT"),
host_write = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_HOST_WRITE_BIT"),
color_attachment_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
shader_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_SHADER_READ_BIT"),
depth_stencil_attachment_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
memory_write = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_MEMORY_WRITE_BIT"),
vertex_attribute_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
depth_stencil_attachment_write = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
command_process_write = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"),
input_attachment_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
flag_bits_max_enum = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_FLAG_BITS_MAX_ENUM"),
color_attachment_read_noncoherent = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
index_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_INDEX_READ_BIT"),
command_process_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.access[v] end return bit.bor(unpack(flags)) end,
indirect_command_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
transfer_read = ffi.cast("enum VkAccessFlagBits", "VK_ACCESS_TRANSFER_READ_BIT"),
},
internal_allocation_type = {
end_range = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_END_RANGE"),
max_enum = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM"),
executable = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"),
begin_range = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE"),
range_size = ffi.cast("enum VkInternalAllocationType", "VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE"),
},
pipeline_create = {
flag_bits_max_enum = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM"),
disable_optimization = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
view_index_from_device_index = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"),
derivative = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
allow_derivatives = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.pipeline_create[v] end return bit.bor(unpack(flags)) end,
dispatch_base = ffi.cast("enum VkPipelineCreateFlagBits", "VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"),
},
display_power_state = {
suspend = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_SUSPEND_EXT"),
off = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_OFF_EXT"),
max_enum = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT"),
end_range = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_END_RANGE_EXT"),
begin_range = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT"),
on = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_ON_EXT"),
range_size = ffi.cast("enum VkDisplayPowerStateEXT", "VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT"),
},
swapchain_create = {
flag_bits_max_enum = ffi.cast("enum VkSwapchainCreateFlagBitsKHR", "VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.swapchain_create[v] end return bit.bor(unpack(flags)) end,
protected = ffi.cast("enum VkSwapchainCreateFlagBitsKHR", "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
split_instance_bind_regions = ffi.cast("enum VkSwapchainCreateFlagBitsKHR", "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
},
indirect_commands_token_type = {
type_push_constant = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX"),
type_max_enum = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX"),
type_pipeline = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX"),
type_dispatch = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX"),
type_index_buffer = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX"),
type_end_range = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX"),
type_vertex_buffer = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX"),
type_begin_range = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX"),
type_range_size = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX"),
type_draw = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX"),
type_draw_indexed = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX"),
type_descriptor_set = ffi.cast("enum VkIndirectCommandsTokenTypeNVX", "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX"),
},
memory_allocate = {
flag_bits_max_enum = ffi.cast("enum VkMemoryAllocateFlagBits", "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.memory_allocate[v] end return bit.bor(unpack(flags)) end,
device_mask = ffi.cast("enum VkMemoryAllocateFlagBits", "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
},
blend_op = {
softlight = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SOFTLIGHT_EXT"),
hardlight = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HARDLIGHT_EXT"),
src_out = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_OUT_EXT"),
dst_atop = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_ATOP_EXT"),
contrast = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_CONTRAST_EXT"),
colordodge = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_COLORDODGE_EXT"),
hsl_hue = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HSL_HUE_EXT"),
exclusion = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_EXCLUSION_EXT"),
minus_clamped = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MINUS_CLAMPED_EXT"),
dst = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_EXT"),
multiply = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MULTIPLY_EXT"),
dst_in = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_IN_EXT"),
end_range = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_END_RANGE"),
pinlight = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PINLIGHT_EXT"),
min = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MIN"),
max_enum = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MAX_ENUM"),
dst_out = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_OUT_EXT"),
lighten = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_LIGHTEN_EXT"),
src_in = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_IN_EXT"),
range_size = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_RANGE_SIZE"),
difference = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DIFFERENCE_EXT"),
begin_range = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_BEGIN_RANGE"),
plus_clamped = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PLUS_CLAMPED_EXT"),
hsl_saturation = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HSL_SATURATION_EXT"),
green = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_GREEN_EXT"),
red = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_RED_EXT"),
add = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_ADD"),
plus_darker = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PLUS_DARKER_EXT"),
plus = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PLUS_EXT"),
vividlight = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_VIVIDLIGHT_EXT"),
minus = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MINUS_EXT"),
hardmix = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HARDMIX_EXT"),
plus_clamped_alpha = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"),
hsl_luminosity = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HSL_LUMINOSITY_EXT"),
colorburn = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_COLORBURN_EXT"),
hsl_color = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_HSL_COLOR_EXT"),
zero = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_ZERO_EXT"),
overlay = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_OVERLAY_EXT"),
blue = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_BLUE_EXT"),
max = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_MAX"),
linearlight = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_LINEARLIGHT_EXT"),
src_atop = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_ATOP_EXT"),
invert = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_INVERT_EXT"),
invert_rgb = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_INVERT_RGB_EXT"),
reverse_subtract = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_REVERSE_SUBTRACT"),
screen = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SCREEN_EXT"),
src = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_EXT"),
linearburn = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_LINEARBURN_EXT"),
lineardodge = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_LINEARDODGE_EXT"),
dst_over = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DST_OVER_EXT"),
darken = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_DARKEN_EXT"),
subtract = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SUBTRACT"),
invert_ovg = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_INVERT_OVG_EXT"),
src_over = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_SRC_OVER_EXT"),
xor = ffi.cast("enum VkBlendOp", "VK_BLEND_OP_XOR_EXT"),
},
conservative_rasterization_mode = {
underestimate = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT"),
end_range = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT"),
max_enum = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT"),
disabled = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT"),
begin_range = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT"),
overestimate = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT"),
range_size = ffi.cast("enum VkConservativeRasterizationModeEXT", "VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT"),
},
descriptor_set_layout_create = {
flag_bits_max_enum = ffi.cast("enum VkDescriptorSetLayoutCreateFlagBits", "VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.descriptor_set_layout_create[v] end return bit.bor(unpack(flags)) end,
update_after_bind_pool = ffi.cast("enum VkDescriptorSetLayoutCreateFlagBits", "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"),
push_descriptor = ffi.cast("enum VkDescriptorSetLayoutCreateFlagBits", "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
},
debug_utils_message_type = {
flag_bits_max_enum = ffi.cast("enum VkDebugUtilsMessageTypeFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT"),
performance = ffi.cast("enum VkDebugUtilsMessageTypeFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"),
validation = ffi.cast("enum VkDebugUtilsMessageTypeFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.debug_utils_message_type[v] end return bit.bor(unpack(flags)) end,
general = ffi.cast("enum VkDebugUtilsMessageTypeFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"),
},
external_memory_feature = {
exportable = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"),
dedicated_only = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.external_memory_feature[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
importable = ffi.cast("enum VkExternalMemoryFeatureFlagBits", "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"),
},
object_entry_type = {
descriptor_set = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX"),
end_range = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX"),
max_enum = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX"),
index_buffer = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX"),
vertex_buffer = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX"),
push_constant = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX"),
begin_range = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX"),
pipeline = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX"),
range_size = ffi.cast("enum VkObjectEntryTypeNVX", "VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX"),
},
structure_type = {
bind_image_memory_swapchain_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"),
pipeline_input_assembly_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"),
pipeline_viewport_w_scaling_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"),
pipeline_dynamic_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"),
display_present_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"),
device_generated_commands_limits = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"),
physical_device_sample_locations_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT"),
descriptor_set_layout_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"),
export_semaphore_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"),
compute_pipeline_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"),
present_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"),
sampler_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"),
cmd_process_commands_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"),
debug_utils_object_tag_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT"),
physical_device_image_format_info_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR"),
loader_instance_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"),
buffer_view_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"),
dedicated_allocation_image_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"),
command_buffer_allocate_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"),
write_descriptor_set = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"),
physical_device_maintenance_3_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR"),
image_view_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"),
device_group_submit_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR"),
dedicated_allocation_buffer_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"),
image_swapchain_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"),
device_group_render_pass_begin_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR"),
device_event_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"),
xcb_surface_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR"),
import_fence_fd_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR"),
command_buffer_begin_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"),
format_properties_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR"),
graphics_pipeline_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"),
event_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"),
physical_device_memory_properties_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR"),
instance_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"),
device_group_device_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR"),
debug_marker_object_tag_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"),
image_view_usage_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR"),
physical_device_descriptor_indexing_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT"),
max_enum = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MAX_ENUM"),
image_memory_barrier = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"),
range_size = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RANGE_SIZE"),
descriptor_set_variable_descriptor_count_allocate_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT"),
end_range = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_END_RANGE"),
physical_device_external_semaphore_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR"),
memory_dedicated_allocate_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR"),
bind_sparse_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"),
memory_get_fd_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"),
fence_get_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR"),
begin_range = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BEGIN_RANGE"),
memory_allocate_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"),
queue_family_properties_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR"),
mapped_memory_range = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"),
render_pass_begin_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"),
pipeline_cache_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"),
sampler_reduction_mode_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT"),
device_group_bind_sparse_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR"),
memory_get_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR"),
import_memory_fd_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"),
physical_device_shader_core_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"),
wayland_surface_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR"),
sampler_ycbcr_conversion_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR"),
physical_device_external_memory_host_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"),
image_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"),
vi_surface_create_info_nn = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"),
memory_host_pointer_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT"),
import_semaphore_fd_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"),
fence_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"),
display_power_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"),
physical_device_external_fence_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR"),
export_semaphore_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR"),
shader_module_validation_cache_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT"),
physical_device_descriptor_indexing_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT"),
framebuffer_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"),
memory_win32_handle_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR"),
descriptor_set_variable_descriptor_count_layout_support = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT"),
buffer_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"),
sampler_ycbcr_conversion_image_format_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR"),
validation_cache_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT"),
import_android_hardware_buffer_info_android = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"),
pipeline_coverage_modulation_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV"),
acquire_next_image_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"),
debug_utils_messenger_callback_data = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT"),
pipeline_color_blend_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"),
pipeline_coverage_to_color_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV"),
descriptor_update_template_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR"),
physical_device_blend_operation_advanced_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT"),
physical_device_blend_operation_advanced_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT"),
display_mode_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"),
external_semaphore_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR"),
pipeline_viewport_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"),
image_format_list_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR"),
multisample_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT"),
pipeline_sample_locations_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT"),
export_fence_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR"),
render_pass_sample_locations_begin_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT"),
import_semaphore_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR"),
sample_locations_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"),
hdr_metadata = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_HDR_METADATA_EXT"),
pipeline_vertex_input_divisor_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT"),
render_pass_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"),
external_format_android = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"),
memory_allocate_flags_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR"),
d3d12_fence_submit_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR"),
pipeline_rasterization_state_rasterization_order = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"),
device_generated_commands_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"),
android_surface_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR"),
pipeline_depth_stencil_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"),
device_queue_global_priority_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"),
surface_capabilities_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR"),
command_buffer_inheritance_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"),
semaphore_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"),
macos_surface_create_info_mvk = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK"),
ios_surface_create_info_mvk = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK"),
descriptor_set_allocate_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"),
physical_device_external_image_format_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR"),
display_surface_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"),
physical_device_subgroup_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"),
memory_get_android_hardware_buffer_info_android = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID"),
export_fence_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR"),
physical_device_protected_memory_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"),
physical_device_surface_info_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR"),
debug_marker_object_name_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"),
bind_image_plane_memory_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR"),
bind_image_memory_device_group_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR"),
pipeline_rasterization_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"),
import_fence_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR"),
shared_present_surface_capabilities = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR"),
buffer_memory_requirements_info_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR"),
pipeline_rasterization_conservative_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT"),
device_group_command_buffer_begin_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR"),
descriptor_set_layout_binding_flags_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT"),
submit_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SUBMIT_INFO"),
pipeline_discard_rectangle_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT"),
physical_device_sampler_ycbcr_conversion_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR"),
dedicated_allocation_memory_allocate_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"),
pipeline_viewport_swizzle_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV"),
physical_device_multiview_per_view_attributes_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX"),
present_times_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE"),
physical_device_shader_draw_parameter_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"),
memory_requirements_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR"),
external_image_format_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR"),
sparse_image_memory_requirements_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR"),
shader_module_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"),
device_group_present_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"),
physical_device_16bit_storage_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR"),
debug_utils_label = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT"),
cmd_reserve_space_for_commands_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"),
indirect_commands_layout_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"),
import_memory_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR"),
mir_surface_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR"),
present_regions = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"),
semaphore_get_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR"),
bind_buffer_memory_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR"),
semaphore_get_fd_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"),
import_memory_host_pointer_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"),
physical_device_push_descriptor_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"),
android_hardware_buffer_format_properties_android = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID"),
device_group_swapchain_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"),
memory_fd_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"),
external_memory_buffer_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR"),
physical_device_multiview_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR"),
debug_marker_marker_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"),
command_pool_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"),
physical_device_vertex_attribute_divisor_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"),
physical_device_conservative_rasterization_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT"),
external_fence_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR"),
external_memory_image_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR"),
xlib_surface_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR"),
sampler_ycbcr_conversion_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR"),
buffer_memory_barrier = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"),
win32_keyed_mutex_acquire_release_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR"),
export_memory_win32_handle_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR"),
export_memory_allocate_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR"),
physical_device_external_buffer_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR"),
descriptor_pool_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"),
object_table_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"),
texture_lod_gather_format_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"),
device_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"),
physical_device_group_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR"),
bind_image_memory_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR"),
physical_device_discard_rectangle_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT"),
debug_report_callback_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"),
render_pass_multiview_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR"),
fence_get_fd_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR"),
device_queue_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"),
memory_barrier = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_BARRIER"),
android_hardware_buffer_properties_android = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID"),
win32_surface_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR"),
pipeline_multisample_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"),
image_format_properties_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR"),
debug_utils_messenger_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT"),
swapchain_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"),
external_buffer_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR"),
memory_dedicated_requirements = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR"),
loader_device_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"),
copy_descriptor_set = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"),
render_pass_input_attachment_aspect_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR"),
physical_device_features_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR"),
physical_device_variable_pointer_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR"),
query_pool_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"),
android_hardware_buffer_usage_android = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID"),
display_event_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT"),
bind_buffer_memory_device_group_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR"),
device_queue_info_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2"),
pipeline_shader_stage_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"),
pipeline_tessellation_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"),
physical_device_sampler_filter_minmax_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT"),
swapchain_counter_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT"),
debug_utils_object_name_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT"),
physical_device_properties_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR"),
validation_flags = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"),
physical_device_protected_memory_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"),
physical_device_sparse_image_format_info_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR"),
image_memory_requirements_info_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR"),
physical_device_id_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR"),
pipeline_layout_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"),
image_sparse_memory_requirements_info_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR"),
protected_submit_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"),
physical_device_multiview_features = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR"),
surface_format_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR"),
physical_device_point_clipping_properties = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR"),
image_plane_memory_requirements_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR"),
application_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_APPLICATION_INFO"),
pipeline_vertex_input_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"),
sparse_image_format_properties_2 = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR"),
descriptor_set_layout_support = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR"),
device_group_present_capabilities = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"),
pipeline_tessellation_domain_origin_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR"),
pipeline_color_blend_advanced_state_create_info = ffi.cast("enum VkStructureType", "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT"),
},
sampler_reduction_mode = {
weighted_average = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT"),
end_range = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT"),
max_enum = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT"),
max = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_MAX_EXT"),
begin_range = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT"),
min = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_MIN_EXT"),
range_size = ffi.cast("enum VkSamplerReductionModeEXT", "VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT"),
},
display_event_type = {
end_range = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT"),
max_enum = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT"),
begin_range = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT"),
first_pixel_out = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT"),
range_size = ffi.cast("enum VkDisplayEventTypeEXT", "VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT"),
},
format_feature = {
sampled_image_filter_linear = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
color_attachment = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
sampled_image_filter_cubic_bit_img = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
transfer_dst = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
sampled_image_ycbcr_conversion_chroma_reconstruction_explicit = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"),
color_attachment_blend = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
storage_texel_buffer_atomic = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
vertex_buffer = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
midpoint_chroma_samples = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
sampled_image_filter_minmax = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
blit_src = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
cosited_chroma_samples = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR"),
disjoint = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_DISJOINT_BIT_KHR"),
storage_image_atomic = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
transfer_src = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
sampled_image = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
sampled_image_ycbcr_conversion_separate_reconstruction_filter = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"),
sampled_image_ycbcr_conversion_linear_filter = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"),
flag_bits_max_enum = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM"),
storage_texel_buffer = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
blit_dst = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
depth_stencil_attachment = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
storage_image = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.format_feature[v] end return bit.bor(unpack(flags)) end,
uniform_texel_buffer = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
sampled_image_ycbcr_conversion_chroma_reconstruction_explicit_forceable = ffi.cast("enum VkFormatFeatureFlagBits", "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"),
},
command_buffer_usage = {
render_pass_continue = ffi.cast("enum VkCommandBufferUsageFlagBits", "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
simultaneous_use = ffi.cast("enum VkCommandBufferUsageFlagBits", "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.command_buffer_usage[v] end return bit.bor(unpack(flags)) end,
one_time_submit = ffi.cast("enum VkCommandBufferUsageFlagBits", "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
flag_bits_max_enum = ffi.cast("enum VkCommandBufferUsageFlagBits", "VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
},
query_control = {
flag_bits_max_enum = ffi.cast("enum VkQueryControlFlagBits", "VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.query_control[v] end return bit.bor(unpack(flags)) end,
precise = ffi.cast("enum VkQueryControlFlagBits", "VK_QUERY_CONTROL_PRECISE_BIT"),
},
logic_op = {
["or"] = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_OR"),
invert = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_INVERT"),
max_enum = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_MAX_ENUM"),
or_reverse = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_OR_REVERSE"),
nor = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_NOR"),
nand = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_NAND"),
begin_range = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_BEGIN_RANGE"),
range_size = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_RANGE_SIZE"),
end_range = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_END_RANGE"),
set = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_SET"),
and_reverse = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_AND_REVERSE"),
["and"] = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_AND"),
or_inverted = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_OR_INVERTED"),
copy_inverted = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_COPY_INVERTED"),
no_op = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_NO_OP"),
copy = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_COPY"),
and_inverted = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_AND_INVERTED"),
equivalent = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_EQUIVALENT"),
clear = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_CLEAR"),
xor = ffi.cast("enum VkLogicOp", "VK_LOGIC_OP_XOR"),
},
command_pool_create = {
flag_bits_max_enum = ffi.cast("enum VkCommandPoolCreateFlagBits", "VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
protected = ffi.cast("enum VkCommandPoolCreateFlagBits", "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
transient = ffi.cast("enum VkCommandPoolCreateFlagBits", "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.command_pool_create[v] end return bit.bor(unpack(flags)) end,
reset_command_buffer = ffi.cast("enum VkCommandPoolCreateFlagBits", "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
},
pipeline_stage = {
tessellation_control_shader = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
host = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_HOST_BIT"),
draw_indirect = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
tessellation_evaluation_shader = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
color_attachment_output = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
command_process = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"),
early_fragment_tests = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
all_commands = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
all_graphics = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
top_of_pipe = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
compute_shader = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
vertex_input = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
flag_bits_max_enum = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM"),
transfer = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_TRANSFER_BIT"),
bottom_of_pipe = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
late_fragment_tests = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
geometry_shader = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.pipeline_stage[v] end return bit.bor(unpack(flags)) end,
vertex_shader = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
fragment_shader = ffi.cast("enum VkPipelineStageFlagBits", "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
},
external_semaphore_handle_type = {
flag_bits_max_enum = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
opaque_win32_kmt = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
opaque_fd = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
sync_fd = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.external_semaphore_handle_type[v] end return bit.bor(unpack(flags)) end,
opaque_win32 = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
d3d12_fence = ffi.cast("enum VkExternalSemaphoreHandleTypeFlagBits", "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"),
},
discard_rectangle_mode = {
end_range = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT"),
max_enum = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT"),
exclusive = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT"),
begin_range = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT"),
range_size = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT"),
inclusive = ffi.cast("enum VkDiscardRectangleModeEXT", "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT"),
},
command_buffer_level = {
end_range = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_END_RANGE"),
secondary = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_SECONDARY"),
max_enum = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_MAX_ENUM"),
begin_range = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE"),
primary = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_PRIMARY"),
range_size = ffi.cast("enum VkCommandBufferLevel", "VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE"),
},
present_mode = {
fifo = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_FIFO_KHR"),
mailbox = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_MAILBOX_KHR"),
end_range = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_END_RANGE_KHR"),
max_enum = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_MAX_ENUM_KHR"),
fifo_relaxed = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_FIFO_RELAXED_KHR"),
shared_continuous_refresh = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"),
immediate = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_IMMEDIATE_KHR"),
begin_range = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_BEGIN_RANGE_KHR"),
shared_demand_refresh = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"),
range_size = ffi.cast("enum VkPresentModeKHR", "VK_PRESENT_MODE_RANGE_SIZE_KHR"),
},
stencil_face = {
front_and_back = ffi.cast("enum VkStencilFaceFlagBits", "VK_STENCIL_FRONT_AND_BACK"),
back = ffi.cast("enum VkStencilFaceFlagBits", "VK_STENCIL_FACE_BACK_BIT"),
front = ffi.cast("enum VkStencilFaceFlagBits", "VK_STENCIL_FACE_FRONT_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.stencil_face[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkStencilFaceFlagBits", "VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM"),
},
stencil_op = {
invert = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_INVERT"),
max_enum = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_MAX_ENUM"),
decrement_and_clamp = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_DECREMENT_AND_CLAMP"),
increment_and_wrap = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_INCREMENT_AND_WRAP"),
end_range = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_END_RANGE"),
begin_range = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_BEGIN_RANGE"),
replace = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_REPLACE"),
decrement_and_wrap = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_DECREMENT_AND_WRAP"),
zero = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_ZERO"),
increment_and_clamp = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_INCREMENT_AND_CLAMP"),
keep = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_KEEP"),
range_size = ffi.cast("enum VkStencilOp", "VK_STENCIL_OP_RANGE_SIZE"),
},
sampler_mipmap_mode = {
linear = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_LINEAR"),
nearest = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_NEAREST"),
max_enum = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_MAX_ENUM"),
begin_range = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE"),
end_range = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_END_RANGE"),
range_size = ffi.cast("enum VkSamplerMipmapMode", "VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE"),
},
sampler_address_mode = {
end_range = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_END_RANGE"),
["repeat"] = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_REPEAT"),
clamp_to_border = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"),
mirrored_repeat = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"),
max_enum = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_MAX_ENUM"),
clamp_to_edge = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"),
begin_range = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE"),
mirror_clamp_to_edge = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"),
range_size = ffi.cast("enum VkSamplerAddressMode", "VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE"),
},
device_event_type = {
end_range = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_END_RANGE_EXT"),
display_hotplug = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT"),
begin_range = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT"),
max_enum = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT"),
range_size = ffi.cast("enum VkDeviceEventTypeEXT", "VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT"),
},
debug_report = {
warning = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_WARNING_BIT_EXT"),
flag_bits_max_enum = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT"),
performance_warning = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
debug = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.debug_report[v] end return bit.bor(unpack(flags)) end,
error = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_ERROR_BIT_EXT"),
information = ffi.cast("enum VkDebugReportFlagBitsEXT", "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
},
debug_report_object_type = {
swapchain = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT"),
instance = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT"),
end_range = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT"),
buffer = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT"),
command_pool = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT"),
object_table = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT"),
pipeline_layout = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT"),
event = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT"),
pipeline = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT"),
display = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT"),
semaphore = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT"),
validation_cache_ext = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT"),
image_view = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT"),
debug_report_callback_ext = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT"),
sampler_ycbcr_conversion = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT"),
surface = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT"),
descriptor_update_template = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT"),
max_enum = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT"),
image = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT"),
device_memory = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT"),
begin_range = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT"),
display_mode = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT"),
buffer_view = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT"),
range_size = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT"),
descriptor_set = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT"),
indirect_commands_layout = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT"),
query_pool = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT"),
framebuffer = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT"),
sampler = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT"),
descriptor_set_layout = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT"),
pipeline_cache = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT"),
device = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT"),
physical_device = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT"),
fence = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT"),
shader_module = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT"),
unknown = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT"),
queue = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT"),
render_pass = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT"),
descriptor_pool = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT"),
command_buffer = ffi.cast("enum VkDebugReportObjectTypeEXT", "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT"),
},
fence_import = {
flag_bits_max_enum = ffi.cast("enum VkFenceImportFlagBits", "VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.fence_import[v] end return bit.bor(unpack(flags)) end,
temporary = ffi.cast("enum VkFenceImportFlagBits", "VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"),
},
queue = {
flag_bits_max_enum = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_FLAG_BITS_MAX_ENUM"),
protected = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_PROTECTED_BIT"),
sparse_binding = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_SPARSE_BINDING_BIT"),
compute = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_COMPUTE_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.queue[v] end return bit.bor(unpack(flags)) end,
graphics = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_GRAPHICS_BIT"),
transfer = ffi.cast("enum VkQueueFlagBits", "VK_QUEUE_TRANSFER_BIT"),
},
system_allocation_scope = {
object = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"),
end_range = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE"),
max_enum = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM"),
cache = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"),
command = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"),
device = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"),
begin_range = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE"),
instance = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"),
range_size = ffi.cast("enum VkSystemAllocationScope", "VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE"),
},
image_create = {
protected = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_PROTECTED_BIT"),
flag_bits_max_enum = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM"),
disjoint = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_DISJOINT_BIT_KHR"),
cube_compatible = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
sample_locations_compatible_depth = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
extended_usage = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"),
split_instance_bind_regions = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
block_texel_view_compatible = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"),
sparse_aliased = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
sparse_binding = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
alias = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_ALIAS_BIT_KHR"),
mutable_format = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.image_create[v] end return bit.bor(unpack(flags)) end,
["2d_array_compatible"] = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
sparse_residency = ffi.cast("enum VkImageCreateFlagBits", "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
},
indirect_commands_layout_usage = {
flag_bits_max_enum = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX"),
sparse_sequences = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"),
empty_executions = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.indirect_commands_layout_usage[v] end return bit.bor(unpack(flags)) end,
indexed_sequences = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"),
unordered_sequences = ffi.cast("enum VkIndirectCommandsLayoutUsageFlagBitsNVX", "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"),
},
memory_property = {
device_local = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
host_coherent = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
host_cached = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
flag_bits_max_enum = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM"),
lazily_allocated = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.memory_property[v] end return bit.bor(unpack(flags)) end,
protected = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_PROTECTED_BIT"),
host_visible = ffi.cast("enum VkMemoryPropertyFlagBits", "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
},
subgroup_feature = {
clustered = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
arithmetic = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
ballot = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_BALLOT_BIT"),
shuffle = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
partitioned = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"),
shuffle_relative = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
quad = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_QUAD_BIT"),
flag_bits_max_enum = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.subgroup_feature[v] end return bit.bor(unpack(flags)) end,
vote = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_VOTE_BIT"),
basic = ffi.cast("enum VkSubgroupFeatureFlagBits", "VK_SUBGROUP_FEATURE_BASIC_BIT"),
},
viewport_coordinate_swizzle = {
negative_z = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV"),
negative_y = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV"),
negative_x = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV"),
max_enum = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV"),
negative_w = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV"),
positive_z = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV"),
positive_y = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV"),
range_size = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV"),
end_range = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV"),
positive_x = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV"),
begin_range = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV"),
positive_w = ffi.cast("enum VkViewportCoordinateSwizzleNV", "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV"),
},
image_tiling = {
linear = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_LINEAR"),
end_range = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_END_RANGE"),
max_enum = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_MAX_ENUM"),
begin_range = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_BEGIN_RANGE"),
range_size = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_RANGE_SIZE"),
optimal = ffi.cast("enum VkImageTiling", "VK_IMAGE_TILING_OPTIMAL"),
},
physical_device_type = {
integrated_gpu = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"),
end_range = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_END_RANGE"),
other = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_OTHER"),
max_enum = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM"),
virtual_gpu = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"),
discrete_gpu = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"),
cpu = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_CPU"),
begin_range = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE"),
range_size = ffi.cast("enum VkPhysicalDeviceType", "VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE"),
},
composite_alpha = {
flag_bits_max_enum = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
opaque = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.composite_alpha[v] end return bit.bor(unpack(flags)) end,
post_multiplied = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
inherit = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
pre_multiplied = ffi.cast("enum VkCompositeAlphaFlagBitsKHR", "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
},
external_semaphore_feature = {
exportable = ffi.cast("enum VkExternalSemaphoreFeatureFlagBits", "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.external_semaphore_feature[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkExternalSemaphoreFeatureFlagBits", "VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM"),
importable = ffi.cast("enum VkExternalSemaphoreFeatureFlagBits", "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"),
},
command_pool_reset = {
flag_bits_max_enum = ffi.cast("enum VkCommandPoolResetFlagBits", "VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.command_pool_reset[v] end return bit.bor(unpack(flags)) end,
release_resources = ffi.cast("enum VkCommandPoolResetFlagBits", "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
},
sparse_memory_bind = {
metadata = ffi.cast("enum VkSparseMemoryBindFlagBits", "VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.sparse_memory_bind[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkSparseMemoryBindFlagBits", "VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM"),
},
query_result = {
flag_bits_max_enum = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM"),
["64"] = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_64_BIT"),
with_availability = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.query_result[v] end return bit.bor(unpack(flags)) end,
partial = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_PARTIAL_BIT"),
wait = ffi.cast("enum VkQueryResultFlagBits", "VK_QUERY_RESULT_WAIT_BIT"),
},
sampler_ycbcr_model_conversion = {
ycbcr_identity = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR"),
end_range = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE"),
max_enum = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM"),
ycbcr_601 = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR"),
rgb_identity = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR"),
ycbcr_2020 = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR"),
begin_range = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE"),
ycbcr_709 = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR"),
range_size = ffi.cast("enum VkSamplerYcbcrModelConversion", "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE"),
},
device_queue_create = {
flag_bits_max_enum = ffi.cast("enum VkDeviceQueueCreateFlagBits", "VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.device_queue_create[v] end return bit.bor(unpack(flags)) end,
protected = ffi.cast("enum VkDeviceQueueCreateFlagBits", "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
},
pipeline_bind_point = {
end_range = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_END_RANGE"),
max_enum = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_MAX_ENUM"),
compute = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_COMPUTE"),
begin_range = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_BEGIN_RANGE"),
range_size = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_RANGE_SIZE"),
graphics = ffi.cast("enum VkPipelineBindPoint", "VK_PIPELINE_BIND_POINT_GRAPHICS"),
},
blend_factor = {
src_alpha = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC_ALPHA"),
max_enum = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_MAX_ENUM"),
one_minus_dst_color = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"),
one_minus_src_color = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"),
constant_color = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_CONSTANT_COLOR"),
one_minus_constant_alpha = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"),
one_minus_src1_color = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"),
zero = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ZERO"),
range_size = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_RANGE_SIZE"),
one_minus_dst_alpha = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"),
one_minus_src_alpha = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"),
src_color = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC_COLOR"),
dst_alpha = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_DST_ALPHA"),
src1_color = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC1_COLOR"),
dst_color = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_DST_COLOR"),
one_minus_constant_color = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"),
end_range = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_END_RANGE"),
src_alpha_saturate = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"),
constant_alpha = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_CONSTANT_ALPHA"),
begin_range = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_BEGIN_RANGE"),
src1_alpha = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_SRC1_ALPHA"),
one_minus_src1_alpha = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"),
one = ffi.cast("enum VkBlendFactor", "VK_BLEND_FACTOR_ONE"),
},
image_aspect = {
plane_1 = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"),
stencil = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_STENCIL_BIT"),
plane_0 = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"),
depth = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_DEPTH_BIT"),
flag_bits_max_enum = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM"),
metadata = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_METADATA_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.image_aspect[v] end return bit.bor(unpack(flags)) end,
color = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_COLOR_BIT"),
plane_2 = ffi.cast("enum VkImageAspectFlagBits", "VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"),
},
command_buffer_reset = {
flag_bits_max_enum = ffi.cast("enum VkCommandBufferResetFlagBits", "VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.command_buffer_reset[v] end return bit.bor(unpack(flags)) end,
release_resources = ffi.cast("enum VkCommandBufferResetFlagBits", "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
},
vertex_input_rate = {
end_range = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_END_RANGE"),
max_enum = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_MAX_ENUM"),
vertex = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_VERTEX"),
instance = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_INSTANCE"),
begin_range = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_BEGIN_RANGE"),
range_size = ffi.cast("enum VkVertexInputRate", "VK_VERTEX_INPUT_RATE_RANGE_SIZE"),
},
dynamic_state = {
blend_constants = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_BLEND_CONSTANTS"),
stencil_write_mask = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"),
sample_locations = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"),
viewport_w_scaling = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"),
viewport = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_VIEWPORT"),
depth_bias = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_DEPTH_BIAS"),
max_enum = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_MAX_ENUM"),
line_width = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_LINE_WIDTH"),
stencil_compare_mask = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"),
end_range = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_END_RANGE"),
discard_rectangle = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"),
begin_range = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_BEGIN_RANGE"),
depth_bounds = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_DEPTH_BOUNDS"),
scissor = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_SCISSOR"),
stencil_reference = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_STENCIL_REFERENCE"),
range_size = ffi.cast("enum VkDynamicState", "VK_DYNAMIC_STATE_RANGE_SIZE"),
},
query_pipeline_statistic = {
clipping_primitives = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
fragment_shader_invocations = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
geometry_shader_primitives = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
input_assembly_primitives = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
compute_shader_invocations = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
flag_bits_max_enum = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM"),
tessellation_evaluation_shader_invocations = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
tessellation_control_shader_patches = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
vertex_shader_invocations = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
clipping_invocations = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.query_pipeline_statistic[v] end return bit.bor(unpack(flags)) end,
geometry_shader_invocations = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
input_assembly_vertices = ffi.cast("enum VkQueryPipelineStatisticFlagBits", "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
},
validation_check = {
end_range = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_END_RANGE_EXT"),
max_enum = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_MAX_ENUM_EXT"),
shaders = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_SHADERS_EXT"),
begin_range = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_BEGIN_RANGE_EXT"),
range_size = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_RANGE_SIZE_EXT"),
all = ffi.cast("enum VkValidationCheckEXT", "VK_VALIDATION_CHECK_ALL_EXT"),
},
external_fence_handle_type = {
flag_bits_max_enum = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
opaque_win32_kmt = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
opaque_fd = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
sync_fd = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.external_fence_handle_type[v] end return bit.bor(unpack(flags)) end,
opaque_win32 = ffi.cast("enum VkExternalFenceHandleTypeFlagBits", "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
},
polygon_mode = {
line = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_LINE"),
max_enum = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_MAX_ENUM"),
end_range = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_END_RANGE"),
fill_rectangle = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_FILL_RECTANGLE_NV"),
begin_range = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_BEGIN_RANGE"),
point = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_POINT"),
fill = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_FILL"),
range_size = ffi.cast("enum VkPolygonMode", "VK_POLYGON_MODE_RANGE_SIZE"),
},
surface_counter = {
flag_bits_max_enum = ffi.cast("enum VkSurfaceCounterFlagBitsEXT", "VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.surface_counter[v] end return bit.bor(unpack(flags)) end,
vblank = ffi.cast("enum VkSurfaceCounterFlagBitsEXT", "VK_SURFACE_COUNTER_VBLANK_EXT"),
},
device_group_present_mode = {
remote = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
sum = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
["local"] = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.device_group_present_mode[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR"),
local_multi_device = ffi.cast("enum VkDeviceGroupPresentModeFlagBitsKHR", "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
},
cull_mode = {
none = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_NONE"),
back = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_BACK_BIT"),
front = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_FRONT_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.cull_mode[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_FLAG_BITS_MAX_ENUM"),
front_and_back = ffi.cast("enum VkCullModeFlagBits", "VK_CULL_MODE_FRONT_AND_BACK"),
},
semaphore_import = {
flag_bits_max_enum = ffi.cast("enum VkSemaphoreImportFlagBits", "VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.semaphore_import[v] end return bit.bor(unpack(flags)) end,
temporary = ffi.cast("enum VkSemaphoreImportFlagBits", "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"),
},
border_color = {
end_range = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_END_RANGE"),
float_opaque_white = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"),
float_transparent_black = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"),
max_enum = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_MAX_ENUM"),
int_opaque_white = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_INT_OPAQUE_WHITE"),
range_size = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_RANGE_SIZE"),
int_opaque_black = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_INT_OPAQUE_BLACK"),
begin_range = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_BEGIN_RANGE"),
int_transparent_black = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"),
float_opaque_black = ffi.cast("enum VkBorderColor", "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"),
},
sparse_image_format = {
nonstandard_block_size = ffi.cast("enum VkSparseImageFormatFlagBits", "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
aligned_mip_size = ffi.cast("enum VkSparseImageFormatFlagBits", "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.sparse_image_format[v] end return bit.bor(unpack(flags)) end,
single_miptail = ffi.cast("enum VkSparseImageFormatFlagBits", "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
flag_bits_max_enum = ffi.cast("enum VkSparseImageFormatFlagBits", "VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM"),
},
buffer_create = {
flag_bits_max_enum = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
sparse_aliased = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
protected = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_PROTECTED_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.buffer_create[v] end return bit.bor(unpack(flags)) end,
sparse_binding = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
sparse_residency = ffi.cast("enum VkBufferCreateFlagBits", "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
},
tessellation_domain_origin = {
end_range = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE"),
max_enum = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM"),
lower_left = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR"),
begin_range = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE"),
range_size = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE"),
upper_left = ffi.cast("enum VkTessellationDomainOrigin", "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR"),
},
rasterization_order = {
relaxed = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_RELAXED_AMD"),
end_range = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_END_RANGE_AMD"),
strict = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_STRICT_AMD"),
begin_range = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD"),
max_enum = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_MAX_ENUM_AMD"),
range_size = ffi.cast("enum VkRasterizationOrderAMD", "VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD"),
},
image_usage = {
sampled = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_SAMPLED_BIT"),
color_attachment = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
transfer_src = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
input_attachment = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
transfer_dst = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
flag_bits_max_enum = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM"),
depth_stencil_attachment = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.image_usage[v] end return bit.bor(unpack(flags)) end,
transient_attachment = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
storage = ffi.cast("enum VkImageUsageFlagBits", "VK_IMAGE_USAGE_STORAGE_BIT"),
},
external_fence_feature = {
exportable = ffi.cast("enum VkExternalFenceFeatureFlagBits", "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.external_fence_feature[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkExternalFenceFeatureFlagBits", "VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM"),
importable = ffi.cast("enum VkExternalFenceFeatureFlagBits", "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"),
},
external_memory_handle_type = {
d3d11_texture_kmt = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"),
opaque_win32_kmt = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
opaque_win32 = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
dma_buf = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"),
d3d11_image_kmt = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
host_allocation = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
d3d11_image = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
host_mapped_foreign_memory = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"),
flag_bits_max_enum = ffi.cast("enum VkExternalMemoryHandleTypeFlagBitsNV", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV"),
opaque_fd = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
d3d11_texture = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"),
android_hardware_buffer_bit_android = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.external_memory_handle_type[v] end return bit.bor(unpack(flags)) end,
d3d12_resource = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"),
d3d12_heap = ffi.cast("enum VkExternalMemoryHandleTypeFlagBits", "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"),
},
object_entry_usage = {
compute = ffi.cast("enum VkObjectEntryUsageFlagBitsNVX", "VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.object_entry_usage[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkObjectEntryUsageFlagBitsNVX", "VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX"),
graphics = ffi.cast("enum VkObjectEntryUsageFlagBitsNVX", "VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"),
},
subpass_description = {
per_view_position_x_only = ffi.cast("enum VkSubpassDescriptionFlagBits", "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.subpass_description[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkSubpassDescriptionFlagBits", "VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
per_view_attributes = ffi.cast("enum VkSubpassDescriptionFlagBits", "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"),
},
shader_info_type = {
statistics = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_STATISTICS_AMD"),
disassembly = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"),
max_enum = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_MAX_ENUM_AMD"),
end_range = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_END_RANGE_AMD"),
begin_range = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD"),
binary = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_BINARY_AMD"),
range_size = ffi.cast("enum VkShaderInfoTypeAMD", "VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD"),
},
image_layout = {
preinitialized = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_PREINITIALIZED"),
general = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_GENERAL"),
depth_attachment_stencil_read_only_optimal = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR"),
transfer_src_optimal = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"),
depth_stencil_read_only_optimal = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"),
begin_range = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_BEGIN_RANGE"),
range_size = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_RANGE_SIZE"),
present_src = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"),
undefined = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_UNDEFINED"),
color_attachment_optimal = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"),
depth_stencil_attachment_optimal = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"),
shader_read_only_optimal = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"),
max_enum = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_MAX_ENUM"),
depth_read_only_stencil_attachment_optimal = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR"),
shared_present = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"),
end_range = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_END_RANGE"),
transfer_dst_optimal = ffi.cast("enum VkImageLayout", "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"),
},
image_type = {
["1d"] = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_1D"),
end_range = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_END_RANGE"),
["3d"] = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_3D"),
max_enum = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_MAX_ENUM"),
begin_range = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_BEGIN_RANGE"),
["2d"] = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_2D"),
range_size = ffi.cast("enum VkImageType", "VK_IMAGE_TYPE_RANGE_SIZE"),
},
dependency = {
device_group = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"),
view_local = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.dependency[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_FLAG_BITS_MAX_ENUM"),
by_region = ffi.cast("enum VkDependencyFlagBits", "VK_DEPENDENCY_BY_REGION_BIT"),
},
surface_transform = {
identity = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
rotate_90 = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
rotate_180 = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
horizontal_mirror_rotate_180 = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
horizontal_mirror_rotate_270 = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
rotate_270 = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
horizontal_mirror = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
flag_bits_max_enum = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.surface_transform[v] end return bit.bor(unpack(flags)) end,
inherit = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
horizontal_mirror_rotate_90 = ffi.cast("enum VkSurfaceTransformFlagBitsKHR", "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
},
peer_memory_feature = {
flag_bits_max_enum = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
generic_src = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR"),
copy_dst = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.peer_memory_feature[v] end return bit.bor(unpack(flags)) end,
copy_src = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR"),
generic_dst = ffi.cast("enum VkPeerMemoryFeatureFlagBits", "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR"),
},
debug_utils_message_severity = {
warning = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"),
verbose = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"),
info = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.debug_utils_message_severity[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT"),
error = ffi.cast("enum VkDebugUtilsMessageSeverityFlagBitsEXT", "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"),
},
point_clipping_behavior = {
end_range = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_END_RANGE"),
all_clip_planes = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR"),
max_enum = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM"),
begin_range = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE"),
user_clip_planes_only = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR"),
range_size = ffi.cast("enum VkPointClippingBehavior", "VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE"),
},
descriptor_type = {
max_enum = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_MAX_ENUM"),
sampler = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_SAMPLER"),
storage_image = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE"),
sampled_image = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE"),
input_attachment = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT"),
uniform_buffer = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER"),
combined_image_sampler = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER"),
storage_buffer_dynamic = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC"),
uniform_texel_buffer = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER"),
end_range = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_END_RANGE"),
storage_texel_buffer = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER"),
begin_range = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_BEGIN_RANGE"),
uniform_buffer_dynamic = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC"),
storage_buffer = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER"),
range_size = ffi.cast("enum VkDescriptorType", "VK_DESCRIPTOR_TYPE_RANGE_SIZE"),
},
attachment_load_op = {
load = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_LOAD"),
dont_care = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_DONT_CARE"),
max_enum = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_MAX_ENUM"),
end_range = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_END_RANGE"),
begin_range = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE"),
clear = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_CLEAR"),
range_size = ffi.cast("enum VkAttachmentLoadOp", "VK_ATTACHMENT_LOAD_OP_RANGE_SIZE"),
},
chroma_location = {
midpoint = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_MIDPOINT_KHR"),
end_range = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_END_RANGE"),
cosited_even = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_COSITED_EVEN_KHR"),
begin_range = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_BEGIN_RANGE"),
max_enum = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_MAX_ENUM"),
range_size = ffi.cast("enum VkChromaLocation", "VK_CHROMA_LOCATION_RANGE_SIZE"),
},
format = {
r64g64b64_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64_SINT"),
b8g8r8_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_USCALED"),
r8g8_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_SNORM"),
r8g8b8a8_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_SINT"),
r64g64_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64_SINT"),
astc_5x4_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"),
begin_range = ffi.cast("enum VkFormat", "VK_FORMAT_BEGIN_RANGE"),
r8g8_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_USCALED"),
eac_r11g11_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_EAC_R11G11_UNORM_BLOCK"),
astc_10x10_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"),
a2r10g10b10_sint_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_SINT_PACK32"),
d32_sfloat_s8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_D32_SFLOAT_S8_UINT"),
g16b16g16r16_422_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G16B16G16R16_422_UNORM_KHR"),
astc_12x12_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"),
r8g8b8a8_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_UNORM"),
r64g64b64a64_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64A64_SINT"),
g12x4_b12x4_r12x4_3plane_444_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR"),
b8g8r8a8_srgb = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_SRGB"),
d16_unorm_s8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_D16_UNORM_S8_UINT"),
r8g8_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_SINT"),
r16g16b16a16_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_USCALED"),
r64g64_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64_UINT"),
range_size = ffi.cast("enum VkFormat", "VK_FORMAT_RANGE_SIZE"),
g16_b16_r16_3plane_420_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR"),
r16g16b16_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_SINT"),
r8g8b8a8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_UINT"),
pvrtc1_2bpp_srgb_block_img = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG"),
pvrtc2_4bpp_unorm_block_img = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG"),
r8g8b8_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_SINT"),
etc2_r8g8b8a1_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK"),
d24_unorm_s8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_D24_UNORM_S8_UINT"),
pvrtc1_4bpp_unorm_block_img = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG"),
pvrtc1_2bpp_unorm_block_img = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG"),
a2b10g10r10_unorm_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_UNORM_PACK32"),
astc_12x12_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"),
r16g16_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_SSCALED"),
g16_b16_r16_3plane_444_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR"),
g16_b16r16_2plane_422_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR"),
g16_b16_r16_3plane_422_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR"),
g16_b16r16_2plane_420_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR"),
s8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_S8_UINT"),
r16g16b16a16_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_SFLOAT"),
r8g8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_UINT"),
pvrtc2_2bpp_srgb_block_img = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG"),
pvrtc1_4bpp_srgb_block_img = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG"),
pvrtc2_4bpp_srgb_block_img = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG"),
r64g64b64a64_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64A64_SFLOAT"),
r64g64b64a64_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64A64_UINT"),
g12x4_b12x4r12x4_2plane_422_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR"),
a2r10g10b10_unorm_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_UNORM_PACK32"),
g12x4_b12x4_r12x4_3plane_422_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR"),
g12x4_b12x4r12x4_2plane_420_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR"),
r12x4g12x4b12x4a12x4_unorm_4pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR"),
r16g16b16_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_SFLOAT"),
r16_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_R16_UNORM"),
r10x6_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6_UNORM_PACK16_KHR"),
r8g8b8a8_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_SSCALED"),
r16g16b16_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_SSCALED"),
r32_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R32_SINT"),
r12x4_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4_UNORM_PACK16_KHR"),
b12x4g12x4r12x4g12x4_422_unorm_4pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR"),
r16_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R16_UINT"),
bc1_rgba_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC1_RGBA_UNORM_BLOCK"),
r16_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R16_USCALED"),
a8b8g8r8_snorm_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_SNORM_PACK32"),
g12x4b12x4g12x4r12x4_422_unorm_4pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR"),
r12x4g12x4_unorm_2pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR"),
g10x6_b10x6_r10x6_3plane_444_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR"),
g10x6_b10x6r10x6_2plane_422_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR"),
g10x6_b10x6_r10x6_3plane_422_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR"),
b10x6g10x6r10x6g10x6_422_unorm_4pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR"),
g8_b8_r8_3plane_420_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR"),
b8g8r8a8_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_SSCALED"),
b10g11r11_ufloat_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_B10G11R11_UFLOAT_PACK32"),
g10x6_b10x6r10x6_2plane_420_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR"),
g10x6b10x6g10x6r10x6_422_unorm_4pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR"),
r10x6g10x6b10x6a10x6_unorm_4pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR"),
g10x6_b10x6_r10x6_3plane_420_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR"),
bc1_rgba_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC1_RGBA_SRGB_BLOCK"),
g12x4_b12x4_r12x4_3plane_420_unorm_3pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR"),
g8_b8_r8_3plane_444_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR"),
g8_b8r8_2plane_422_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR"),
etc2_r8g8b8a8_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK"),
r8g8b8a8_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_USCALED"),
g8_b8_r8_3plane_422_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR"),
bc4_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC4_UNORM_BLOCK"),
g8_b8r8_2plane_420_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR"),
bc5_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC5_UNORM_BLOCK"),
astc_10x5_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"),
r8g8b8_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_SSCALED"),
r10x6g10x6_unorm_2pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR"),
astc_5x5_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"),
a8b8g8r8_uint_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_UINT_PACK32"),
r8g8_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_SSCALED"),
r32g32b32_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32_SFLOAT"),
bc7_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC7_UNORM_BLOCK"),
g8b8g8r8_422_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_G8B8G8R8_422_UNORM_KHR"),
astc_12x10_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"),
etc2_r8g8b8a8_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK"),
eac_r11_snorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_EAC_R11_SNORM_BLOCK"),
astc_12x10_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"),
astc_10x10_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"),
r5g6b5_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R5G6B5_UNORM_PACK16"),
r32g32b32_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32_UINT"),
r64_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R64_UINT"),
astc_10x8_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"),
r32g32b32_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32_SINT"),
bc1_rgb_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC1_RGB_UNORM_BLOCK"),
r64g64b64_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64_SFLOAT"),
etc2_r8g8b8_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK"),
a2b10g10r10_uscaled_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_USCALED_PACK32"),
r4g4_unorm_pack8 = ffi.cast("enum VkFormat", "VK_FORMAT_R4G4_UNORM_PACK8"),
astc_10x6_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"),
e5b9g9r9_ufloat_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32"),
astc_10x5_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"),
r16g16_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_UINT"),
r32g32b32a32_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32A32_UINT"),
astc_8x8_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x8_UNORM_BLOCK"),
astc_8x6_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x6_SRGB_BLOCK"),
astc_8x6_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x6_UNORM_BLOCK"),
a8b8g8r8_srgb_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_SRGB_PACK32"),
b8g8r8_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_SSCALED"),
r16g16_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_SFLOAT"),
astc_5x5_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"),
astc_6x5_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"),
astc_8x5_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x5_SRGB_BLOCK"),
a8b8g8r8_unorm_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_UNORM_PACK32"),
astc_8x5_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x5_UNORM_BLOCK"),
r8g8_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_UNORM"),
r32g32_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32_SFLOAT"),
astc_6x6_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"),
astc_6x6_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"),
r16g16b16_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_UNORM"),
astc_6x5_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"),
b8g8r8g8_422_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8G8_422_UNORM_KHR"),
r32g32_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32_SINT"),
astc_5x4_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"),
a8b8g8r8_uscaled_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_USCALED_PACK32"),
r64_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R64_SFLOAT"),
astc_4x4_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"),
max_enum = ffi.cast("enum VkFormat", "VK_FORMAT_MAX_ENUM"),
a2b10g10r10_snorm_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_SNORM_PACK32"),
eac_r11g11_snorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_EAC_R11G11_SNORM_BLOCK"),
a8b8g8r8_sscaled_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"),
a2b10g10r10_uint_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_UINT_PACK32"),
bc2_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC2_SRGB_BLOCK"),
x8_d24_unorm_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_X8_D24_UNORM_PACK32"),
r8_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R8_SSCALED"),
b8g8r8_srgb = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_SRGB"),
a1r5g5b5_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_A1R5G5B5_UNORM_PACK16"),
b5g6r5_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_B5G6R5_UNORM_PACK16"),
r16_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R16_SFLOAT"),
b8g8r8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_UINT"),
undefined = ffi.cast("enum VkFormat", "VK_FORMAT_UNDEFINED"),
eac_r11_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_EAC_R11_UNORM_BLOCK"),
etc2_r8g8b8a1_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK"),
r16_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R16_SSCALED"),
a2r10g10b10_snorm_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_SNORM_PACK32"),
pvrtc2_2bpp_unorm_block_img = ffi.cast("enum VkFormat", "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG"),
r16g16b16_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_UINT"),
r16g16b16a16_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_SINT"),
bc3_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC3_SRGB_BLOCK"),
b8g8r8_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_UNORM"),
b8g8r8a8_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_USCALED"),
etc2_r8g8b8_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK"),
bc7_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC7_SRGB_BLOCK"),
r16g16b16_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_USCALED"),
d32_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_D32_SFLOAT"),
bc6h_ufloat_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC6H_UFLOAT_BLOCK"),
r64_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R64_SINT"),
bc5_snorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC5_SNORM_BLOCK"),
r8_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_R8_SNORM"),
bc4_snorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC4_SNORM_BLOCK"),
r16_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_R16_SNORM"),
bc3_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC3_UNORM_BLOCK"),
bc2_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC2_UNORM_BLOCK"),
r32g32_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32_UINT"),
bc1_rgb_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC1_RGB_SRGB_BLOCK"),
astc_10x6_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"),
r8_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R8_USCALED"),
b8g8r8a8_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_SNORM"),
r8g8b8a8_srgb = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_SRGB"),
astc_4x4_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"),
r8g8b8_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_UNORM"),
a2r10g10b10_uscaled_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_USCALED_PACK32"),
end_range = ffi.cast("enum VkFormat", "VK_FORMAT_END_RANGE"),
b8g8r8a8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_UINT"),
b5g5r5a1_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_B5G5R5A1_UNORM_PACK16"),
astc_10x8_unorm_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"),
astc_8x8_srgb_block = ffi.cast("enum VkFormat", "VK_FORMAT_ASTC_8x8_SRGB_BLOCK"),
r16g16b16_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16_SNORM"),
b4g4r4a4_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_B4G4R4A4_UNORM_PACK16"),
a2r10g10b10_uint_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_UINT_PACK32"),
r16g16_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_SNORM"),
r8_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R8_SINT"),
r16g16_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_SINT"),
r8g8b8a8_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8A8_SNORM"),
a8b8g8r8_sint_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A8B8G8R8_SINT_PACK32"),
b8g8r8a8_sint = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_SINT"),
r8_srgb = ffi.cast("enum VkFormat", "VK_FORMAT_R8_SRGB"),
r8g8b8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_UINT"),
r8g8b8_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_USCALED"),
b16g16r16g16_422_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_B16G16R16G16_422_UNORM_KHR"),
b8g8r8a8_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8A8_UNORM"),
r8g8b8_srgb = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_SRGB"),
r8g8b8_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8B8_SNORM"),
r64g64_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64_SFLOAT"),
a2b10g10r10_sint_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_SINT_PACK32"),
r64g64b64_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R64G64B64_UINT"),
r16_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R16_SINT"),
a2r10g10b10_sscaled_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"),
a2b10g10r10_sscaled_pack32 = ffi.cast("enum VkFormat", "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"),
r16g16_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_UNORM"),
r4g4b4a4_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R4G4B4A4_UNORM_PACK16"),
r16g16_uscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16_USCALED"),
bc6h_sfloat_block = ffi.cast("enum VkFormat", "VK_FORMAT_BC6H_SFLOAT_BLOCK"),
b8g8r8_sint = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_SINT"),
r5g5b5a1_unorm_pack16 = ffi.cast("enum VkFormat", "VK_FORMAT_R5G5B5A1_UNORM_PACK16"),
r8g8_srgb = ffi.cast("enum VkFormat", "VK_FORMAT_R8G8_SRGB"),
r16g16b16a16_sscaled = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_SSCALED"),
r8_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_R8_UNORM"),
r16g16b16a16_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_UNORM"),
r8_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R8_UINT"),
r16g16b16a16_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_UINT"),
r16g16b16a16_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_R16G16B16A16_SNORM"),
d16_unorm = ffi.cast("enum VkFormat", "VK_FORMAT_D16_UNORM"),
b8g8r8_snorm = ffi.cast("enum VkFormat", "VK_FORMAT_B8G8R8_SNORM"),
r32_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R32_SFLOAT"),
r32g32b32a32_sfloat = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32A32_SFLOAT"),
r32g32b32a32_sint = ffi.cast("enum VkFormat", "VK_FORMAT_R32G32B32A32_SINT"),
r32_uint = ffi.cast("enum VkFormat", "VK_FORMAT_R32_UINT"),
},
component_swizzle = {
identity = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_IDENTITY"),
one = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_ONE"),
max_enum = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_MAX_ENUM"),
g = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_G"),
b = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_B"),
zero = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_ZERO"),
end_range = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_END_RANGE"),
r = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_R"),
begin_range = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_BEGIN_RANGE"),
a = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_A"),
range_size = ffi.cast("enum VkComponentSwizzle", "VK_COMPONENT_SWIZZLE_RANGE_SIZE"),
},
query_type = {
occlusion = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_OCCLUSION"),
end_range = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_END_RANGE"),
max_enum = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_MAX_ENUM"),
begin_range = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_BEGIN_RANGE"),
pipeline_statistics = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_PIPELINE_STATISTICS"),
timestamp = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_TIMESTAMP"),
range_size = ffi.cast("enum VkQueryType", "VK_QUERY_TYPE_RANGE_SIZE"),
},
primitive_topology = {
line_list = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"),
triangle_list_with_adjacency = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"),
end_range = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_END_RANGE"),
triangle_fan = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"),
max_enum = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_MAX_ENUM"),
line_list_with_adjacency = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"),
range_size = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE"),
point_list = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"),
line_strip = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"),
line_strip_with_adjacency = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"),
triangle_strip_with_adjacency = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"),
triangle_strip = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"),
begin_range = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE"),
triangle_list = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"),
patch_list = ffi.cast("enum VkPrimitiveTopology", "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"),
},
memory_heap = {
device_local = ffi.cast("enum VkMemoryHeapFlagBits", "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.memory_heap[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkMemoryHeapFlagBits", "VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM"),
multi_instance = ffi.cast("enum VkMemoryHeapFlagBits", "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"),
},
sample_count = {
["4"] = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_4_BIT"),
["8"] = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_8_BIT"),
["32"] = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_32_BIT"),
["2"] = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_2_BIT"),
["64"] = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_64_BIT"),
flag_bits_max_enum = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.sample_count[v] end return bit.bor(unpack(flags)) end,
["1"] = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_1_BIT"),
["16"] = ffi.cast("enum VkSampleCountFlagBits", "VK_SAMPLE_COUNT_16_BIT"),
},
image_view_type = {
["2d_array"] = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_2D_ARRAY"),
end_range = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_END_RANGE"),
["3d"] = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_3D"),
max_enum = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_MAX_ENUM"),
["2d"] = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_2D"),
["1d"] = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_1D"),
cube = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_CUBE"),
cube_array = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"),
begin_range = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_BEGIN_RANGE"),
range_size = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_RANGE_SIZE"),
["1d_array"] = ffi.cast("enum VkImageViewType", "VK_IMAGE_VIEW_TYPE_1D_ARRAY"),
},
coverage_modulation_mode = {
none = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_NONE_NV"),
max_enum = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV"),
rgb = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_RGB_NV"),
rgba = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_RGBA_NV"),
alpha = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_ALPHA_NV"),
begin_range = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV"),
end_range = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_END_RANGE_NV"),
range_size = ffi.cast("enum VkCoverageModulationModeNV", "VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV"),
},
pipeline_cache_header_version = {
end_range = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE"),
max_enum = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM"),
begin_range = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE"),
one = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"),
range_size = ffi.cast("enum VkPipelineCacheHeaderVersion", "VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE"),
},
index_type = {
uint32 = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_UINT32"),
uint16 = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_UINT16"),
max_enum = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_MAX_ENUM"),
begin_range = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_BEGIN_RANGE"),
end_range = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_END_RANGE"),
range_size = ffi.cast("enum VkIndexType", "VK_INDEX_TYPE_RANGE_SIZE"),
},
attachment_description = {
flag_bits_max_enum = ffi.cast("enum VkAttachmentDescriptionFlagBits", "VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.attachment_description[v] end return bit.bor(unpack(flags)) end,
may_alias = ffi.cast("enum VkAttachmentDescriptionFlagBits", "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
},
descriptor_update_template_type = {
descriptor_set = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR"),
end_range = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE"),
push_descriptors = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR"),
begin_range = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE"),
max_enum = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM"),
range_size = ffi.cast("enum VkDescriptorUpdateTemplateType", "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE"),
},
filter = {
linear = ffi.cast("enum VkFilter", "VK_FILTER_LINEAR"),
nearest = ffi.cast("enum VkFilter", "VK_FILTER_NEAREST"),
max_enum = ffi.cast("enum VkFilter", "VK_FILTER_MAX_ENUM"),
cubic_img = ffi.cast("enum VkFilter", "VK_FILTER_CUBIC_IMG"),
begin_range = ffi.cast("enum VkFilter", "VK_FILTER_BEGIN_RANGE"),
end_range = ffi.cast("enum VkFilter", "VK_FILTER_END_RANGE"),
range_size = ffi.cast("enum VkFilter", "VK_FILTER_RANGE_SIZE"),
},
validation_cache_header_version = {
end_range = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT"),
max_enum = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT"),
begin_range = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT"),
one = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"),
range_size = ffi.cast("enum VkValidationCacheHeaderVersionEXT", "VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT"),
},
result = {
error_validation_failed = ffi.cast("enum VkResult", "VK_ERROR_VALIDATION_FAILED_EXT"),
error_initialization_failed = ffi.cast("enum VkResult", "VK_ERROR_INITIALIZATION_FAILED"),
event_set = ffi.cast("enum VkResult", "VK_EVENT_SET"),
suboptimal = ffi.cast("enum VkResult", "VK_SUBOPTIMAL_KHR"),
error_invalid_shader = ffi.cast("enum VkResult", "VK_ERROR_INVALID_SHADER_NV"),
error_device_lost = ffi.cast("enum VkResult", "VK_ERROR_DEVICE_LOST"),
incomplete = ffi.cast("enum VkResult", "VK_INCOMPLETE"),
event_reset = ffi.cast("enum VkResult", "VK_EVENT_RESET"),
result_range_size = ffi.cast("enum VkResult", "VK_RESULT_RANGE_SIZE"),
error_out_of_pool_memory = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_POOL_MEMORY_KHR"),
error_out_of_date = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_DATE_KHR"),
error_incompatible_display = ffi.cast("enum VkResult", "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR"),
error_not_permitted = ffi.cast("enum VkResult", "VK_ERROR_NOT_PERMITTED_EXT"),
error_extension_not_present = ffi.cast("enum VkResult", "VK_ERROR_EXTENSION_NOT_PRESENT"),
error_memory_map_failed = ffi.cast("enum VkResult", "VK_ERROR_MEMORY_MAP_FAILED"),
error_feature_not_present = ffi.cast("enum VkResult", "VK_ERROR_FEATURE_NOT_PRESENT"),
result_end_range = ffi.cast("enum VkResult", "VK_RESULT_END_RANGE"),
not_ready = ffi.cast("enum VkResult", "VK_NOT_READY"),
error_too_many_objects = ffi.cast("enum VkResult", "VK_ERROR_TOO_MANY_OBJECTS"),
result_max_enum = ffi.cast("enum VkResult", "VK_RESULT_MAX_ENUM"),
error_incompatible_driver = ffi.cast("enum VkResult", "VK_ERROR_INCOMPATIBLE_DRIVER"),
error_layer_not_present = ffi.cast("enum VkResult", "VK_ERROR_LAYER_NOT_PRESENT"),
error_fragmentation = ffi.cast("enum VkResult", "VK_ERROR_FRAGMENTATION_EXT"),
timeout = ffi.cast("enum VkResult", "VK_TIMEOUT"),
error_surface_lost = ffi.cast("enum VkResult", "VK_ERROR_SURFACE_LOST_KHR"),
error_invalid_external_handle = ffi.cast("enum VkResult", "VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR"),
error_format_not_supported = ffi.cast("enum VkResult", "VK_ERROR_FORMAT_NOT_SUPPORTED"),
error_out_of_device_memory = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_DEVICE_MEMORY"),
success = ffi.cast("enum VkResult", "VK_SUCCESS"),
error_fragmented_pool = ffi.cast("enum VkResult", "VK_ERROR_FRAGMENTED_POOL"),
error_native_window_in_use = ffi.cast("enum VkResult", "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"),
error_out_of_host_memory = ffi.cast("enum VkResult", "VK_ERROR_OUT_OF_HOST_MEMORY"),
result_begin_range = ffi.cast("enum VkResult", "VK_RESULT_BEGIN_RANGE"),
},
sharing_mode = {
end_range = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_END_RANGE"),
max_enum = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_MAX_ENUM"),
exclusive = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_EXCLUSIVE"),
begin_range = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_BEGIN_RANGE"),
concurrent = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_CONCURRENT"),
range_size = ffi.cast("enum VkSharingMode", "VK_SHARING_MODE_RANGE_SIZE"),
},
buffer_usage = {
transfer_src = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
index_buffer = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
uniform_buffer = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
flag_bits_max_enum = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
uniform_texel_buffer = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
vertex_buffer = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
storage_texel_buffer = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
indirect_buffer = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.buffer_usage[v] end return bit.bor(unpack(flags)) end,
storage_buffer = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
transfer_dst = ffi.cast("enum VkBufferUsageFlagBits", "VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
},
descriptor_binding = {
partially_bound = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
flag_bits_max_enum = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT"),
update_after_bind = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.descriptor_binding[v] end return bit.bor(unpack(flags)) end,
update_unused_while_pending = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
variable_descriptor_count = ffi.cast("enum VkDescriptorBindingFlagBitsEXT", "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
},
subpass_contents = {
end_range = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_END_RANGE"),
inline = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_INLINE"),
secondary_command_buffers = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS"),
begin_range = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_BEGIN_RANGE"),
max_enum = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_MAX_ENUM"),
range_size = ffi.cast("enum VkSubpassContents", "VK_SUBPASS_CONTENTS_RANGE_SIZE"),
},
color_component = {
b = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_B_BIT"),
flag_bits_max_enum = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM"),
r = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_R_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.color_component[v] end return bit.bor(unpack(flags)) end,
a = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_A_BIT"),
g = ffi.cast("enum VkColorComponentFlagBits", "VK_COLOR_COMPONENT_G_BIT"),
},
fence_create = {
signaled = ffi.cast("enum VkFenceCreateFlagBits", "VK_FENCE_CREATE_SIGNALED_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.fence_create[v] end return bit.bor(unpack(flags)) end,
flag_bits_max_enum = ffi.cast("enum VkFenceCreateFlagBits", "VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM"),
},
compare_op = {
not_equal = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_NOT_EQUAL"),
end_range = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_END_RANGE"),
greater_or_equal = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_GREATER_OR_EQUAL"),
max_enum = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_MAX_ENUM"),
never = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_NEVER"),
equal = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_EQUAL"),
less = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_LESS"),
greater = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_GREATER"),
less_or_equal = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_LESS_OR_EQUAL"),
always = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_ALWAYS"),
begin_range = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_BEGIN_RANGE"),
range_size = ffi.cast("enum VkCompareOp", "VK_COMPARE_OP_RANGE_SIZE"),
},
colorspace = {
_hdr10_hlg = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_HDR10_HLG_EXT"),
_adobergb_nonlinear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"),
_display_p3_nonlinear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"),
_end_range = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_END_RANGE_KHR"),
_bt2020_linear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_BT2020_LINEAR_EXT"),
_bt709_nonlinear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_BT709_NONLINEAR_EXT"),
_adobergb_linear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"),
_dci_p3_linear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT"),
_begin_range = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_BEGIN_RANGE_KHR"),
_extended_srgb_nonlinear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"),
_extended_srgb_linear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"),
_max_enum = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_MAX_ENUM_KHR"),
_range_size = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_RANGE_SIZE_KHR"),
_srgb_nonlinear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"),
_dci_p3_nonlinear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"),
_pass_through = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_PASS_THROUGH_EXT"),
_bt709_linear = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_BT709_LINEAR_EXT"),
_hdr10_st2084 = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_HDR10_ST2084_EXT"),
_dolbyvision = ffi.cast("enum VkColorSpaceKHR", "VK_COLOR_SPACE_DOLBYVISION_EXT"),
},
queue_global_priority = {
max_enum = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT"),
medium = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"),
realtime = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"),
high = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"),
end_range = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT"),
low = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"),
begin_range = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT"),
range_size = ffi.cast("enum VkQueueGlobalPriorityEXT", "VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT"),
},
sampler_ycbcr_range = {
end_range = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_END_RANGE"),
max_enum = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_MAX_ENUM"),
itu_full = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR"),
begin_range = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE"),
itu_narrow = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR"),
range_size = ffi.cast("enum VkSamplerYcbcrRange", "VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE"),
},
shader_stage = {
compute = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_COMPUTE_BIT"),
fragment = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_FRAGMENT_BIT"),
all = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_ALL"),
flag_bits_max_enum = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM"),
geometry = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_GEOMETRY_BIT"),
all_graphics = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_ALL_GRAPHICS"),
vertex = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_VERTEX_BIT"),
tessellation_control = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
tessellation_evaluation = ffi.cast("enum VkShaderStageFlagBits", "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
make_enums = function(flags) if #flags == 0 then return 0 end for i,v in ipairs(flags) do flags[i] = library.e.shader_stage[v] end return bit.bor(unpack(flags)) end,
},
}
function library.GetInstanceLayerProperties()
local count = ffi.new("uint32_t[1]")
CLIB.vkEnumerateInstanceLayerProperties(count, nil)
if count[0] == 0 then return end
local array = ffi.new("struct VkLayerProperties [?]", count[0])
local status = CLIB.vkEnumerateInstanceLayerProperties(count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetPhysicalDevices(instance)
local count = ffi.new("uint32_t[1]")
CLIB.vkEnumeratePhysicalDevices(instance, count, nil)
if count[0] == 0 then return end
local array = ffi.new("struct VkPhysicalDevice_T * [?]", count[0])
local status = CLIB.vkEnumeratePhysicalDevices(instance, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetInstanceVersion()
local count = ffi.new("uint32_t[1]")
CLIB.vkEnumerateInstanceVersion(count, nil)
if count[0] == 0 then return end
local array = ffi.new("unsigned int [?]", count[0])
local status = CLIB.vkEnumerateInstanceVersion(count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetInstanceExtensionProperties(pLayerName)
local count = ffi.new("uint32_t[1]")
CLIB.vkEnumerateInstanceExtensionProperties(pLayerName, count, nil)
if count[0] == 0 then return end
local array = ffi.new("struct VkExtensionProperties [?]", count[0])
local status = CLIB.vkEnumerateInstanceExtensionProperties(pLayerName, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetDeviceLayerProperties(physicalDevice)
local count = ffi.new("uint32_t[1]")
CLIB.vkEnumerateDeviceLayerProperties(physicalDevice, count, nil)
if count[0] == 0 then return end
local array = ffi.new("struct VkLayerProperties [?]", count[0])
local status = CLIB.vkEnumerateDeviceLayerProperties(physicalDevice, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetPhysicalDeviceGroups(instance)
local count = ffi.new("uint32_t[1]")
CLIB.vkEnumeratePhysicalDeviceGroups(instance, count, nil)
if count[0] == 0 then return end
local array = ffi.new("struct VkPhysicalDeviceGroupProperties [?]", count[0])
local status = CLIB.vkEnumeratePhysicalDeviceGroups(instance, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetDeviceExtensionProperties(physicalDevice, pLayerName)
local count = ffi.new("uint32_t[1]")
CLIB.vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, count, nil)
if count[0] == 0 then return end
local array = ffi.new("struct VkExtensionProperties [?]", count[0])
local status = CLIB.vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetPhysicalDeviceGroups(instance)
local count = ffi.new("uint32_t[1]")
library.EnumeratePhysicalDeviceGroupsKHR(instance, count, nil)
if count[0] == 0 then return end
local array = ffi.new("struct VkPhysicalDeviceGroupProperties [?]", count[0])
local status = library.EnumeratePhysicalDeviceGroupsKHR(instance, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetPhysicalDeviceMultisampleProperties(physicalDevice, samples)
if type(samples) == "table" then
samples = library.e.sample_count.make_enums(samples)
elseif type(samples) == "string" then
samples = library.e.sample_count[samples]
end
local box = ffi.new("struct VkMultisamplePropertiesEXT [1]")
library.GetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, box)
return box[0]
end
function library.GetPipelineCacheData(device, pipelineCache, pDataSize)
local box = ffi.new("void [1]")
local status = CLIB.vkGetPipelineCacheData(device, pipelineCache, pDataSize, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo)
if type(pExternalSemaphoreInfo) == "table" then
pExternalSemaphoreInfo = library.s.PhysicalDeviceExternalSemaphoreInfo(pExternalSemaphoreInfo, false)
end
local box = ffi.new("struct VkExternalSemaphoreProperties [1]")
CLIB.vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, box)
return box[0]
end
function library.GetPhysicalDeviceFormatProperties2(physicalDevice, format)
if type(format) == "string" then
format = library.e.format[format]
end
local box = ffi.new("struct VkFormatProperties2 [1]")
library.GetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, box)
return box[0]
end
function library.GetRefreshCycleDurationGOO(device, swapchain)
local box = ffi.new("struct VkRefreshCycleDurationGOOGLE [1]")
local status = library.GetRefreshCycleDurationGOOGLE(device, swapchain, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetMemoryFd(device, pGetFdInfo)
if type(pGetFdInfo) == "table" then
pGetFdInfo = library.s.MemoryGetFdInfoKHR(pGetFdInfo, false)
end
local box = ffi.new("int [1]")
local status = library.GetMemoryFdKHR(device, pGetFdInfo, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceProperties2(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceProperties2 [1]")
CLIB.vkGetPhysicalDeviceProperties2(physicalDevice, box)
return box[0]
end
function library.GetPhysicalDeviceProperties(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceProperties [1]")
CLIB.vkGetPhysicalDeviceProperties(physicalDevice, box)
return box[0]
end
function library.GetDescriptorSetLayoutSupport(device, pCreateInfo)
if type(pCreateInfo) == "table" then
pCreateInfo = library.s.DescriptorSetLayoutCreateInfo(pCreateInfo, false)
end
local box = ffi.new("struct VkDescriptorSetLayoutSupport [1]")
library.GetDescriptorSetLayoutSupportKHR(device, pCreateInfo, box)
return box[0]
end
function library.GetDisplayPlaneSupportedDisplays(physicalDevice, planeIndex)
local count = ffi.new("uint32_t[1]")
library.GetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, count, nil)
local array = ffi.new("struct VkDisplayKHR_T * [?]", count[0])
local status = library.GetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetSwapchainStatus(device)
local box = ffi.new("struct VkSwapchainKHR_T [1]")
local status = library.GetSwapchainStatusKHR(device, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceMemoryProperties2(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceMemoryProperties2 [1]")
library.GetPhysicalDeviceMemoryProperties2KHR(physicalDevice, box)
return box[0]
end
function library.GetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo)
if type(pExternalSemaphoreInfo) == "table" then
pExternalSemaphoreInfo = library.s.PhysicalDeviceExternalSemaphoreInfo(pExternalSemaphoreInfo, false)
end
local box = ffi.new("struct VkExternalSemaphoreProperties [1]")
library.GetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, box)
return box[0]
end
function library.GetFenceStatus(device)
local box = ffi.new("struct VkFence_T [1]")
local status = CLIB.vkGetFenceStatus(device, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetImageSparseMemoryRequirements2(device, pInfo)
if type(pInfo) == "table" then
pInfo = library.s.ImageSparseMemoryRequirementsInfo2(pInfo, false)
end
local count = ffi.new("uint32_t[1]")
library.GetImageSparseMemoryRequirements2KHR(device, pInfo, count, nil)
local array = ffi.new("struct VkSparseImageMemoryRequirements2 [?]", count[0])
library.GetImageSparseMemoryRequirements2KHR(device, pInfo, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetPhysicalDeviceFeatures2(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceFeatures2 [1]")
library.GetPhysicalDeviceFeatures2KHR(physicalDevice, box)
return box[0]
end
function library.GetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo)
if type(pExternalBufferInfo) == "table" then
pExternalBufferInfo = library.s.PhysicalDeviceExternalBufferInfo(pExternalBufferInfo, false)
end
local box = ffi.new("struct VkExternalBufferProperties [1]")
library.GetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, box)
return box[0]
end
function library.GetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo)
if type(pExternalFenceInfo) == "table" then
pExternalFenceInfo = library.s.PhysicalDeviceExternalFenceInfo(pExternalFenceInfo, false)
end
local box = ffi.new("struct VkExternalFenceProperties [1]")
library.GetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, box)
return box[0]
end
function library.GetPastPresentationTimingGOO(device, swapchain)
local count = ffi.new("uint32_t[1]")
library.GetPastPresentationTimingGOOGLE(device, swapchain, count, nil)
local array = ffi.new("struct VkPastPresentationTimingGOOGLE [?]", count[0])
local status = library.GetPastPresentationTimingGOOGLE(device, swapchain, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags)
if type(format) == "string" then
format = library.e.format[format]
end
if type(type) == "string" then
type = library.e.image_type[type]
end
if type(tiling) == "string" then
tiling = library.e.image_tiling[tiling]
end
if type(usage) == "table" then
usage = library.e.image_usage.make_enums(usage)
elseif type(usage) == "string" then
usage = library.e.image_usage[usage]
end
if type(flags) == "table" then
flags = library.e.image_create.make_enums(flags)
elseif type(flags) == "string" then
flags = library.e.image_create[flags]
end
local box = ffi.new("struct VkImageFormatProperties [1]")
local status = CLIB.vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceFormatProperties2(physicalDevice, format)
if type(format) == "string" then
format = library.e.format[format]
end
local box = ffi.new("struct VkFormatProperties2 [1]")
CLIB.vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, box)
return box[0]
end
function library.GetDisplayPlaneCapabilities(physicalDevice, mode, planeIndex)
local box = ffi.new("struct VkDisplayPlaneCapabilitiesKHR [1]")
local status = library.GetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetImageSparseMemoryRequirements(device, image)
local count = ffi.new("uint32_t[1]")
CLIB.vkGetImageSparseMemoryRequirements(device, image, count, nil)
local array = ffi.new("struct VkSparseImageMemoryRequirements [?]", count[0])
CLIB.vkGetImageSparseMemoryRequirements(device, image, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetEventStatus(device)
local box = ffi.new("struct VkEvent_T [1]")
local status = CLIB.vkGetEventStatus(device, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo)
if type(pFormatInfo) == "table" then
pFormatInfo = library.s.PhysicalDeviceSparseImageFormatInfo2(pFormatInfo, false)
end
local count = ffi.new("uint32_t[1]")
CLIB.vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, count, nil)
local array = ffi.new("struct VkSparseImageFormatProperties2 [?]", count[0])
CLIB.vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetDisplayModeProperties(physicalDevice, display)
local count = ffi.new("uint32_t[1]")
library.GetDisplayModePropertiesKHR(physicalDevice, display, count, nil)
local array = ffi.new("struct VkDisplayModePropertiesKHR [?]", count[0])
local status = library.GetDisplayModePropertiesKHR(physicalDevice, display, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetFenceFd(device, pGetFdInfo)
if type(pGetFdInfo) == "table" then
pGetFdInfo = library.s.FenceGetFdInfoKHR(pGetFdInfo, false)
end
local box = ffi.new("int [1]")
local status = library.GetFenceFdKHR(device, pGetFdInfo, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetBufferMemoryRequirements(device, buffer)
local box = ffi.new("struct VkMemoryRequirements [1]")
CLIB.vkGetBufferMemoryRequirements(device, buffer, box)
return box[0]
end
function library.GetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex)
local box = ffi.new("unsigned int [1]")
library.GetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, box)
return box[0]
end
function library.GetPhysicalDeviceGeneratedCommandsProperties(physicalDevice, pFeatures)
if type(pFeatures) == "table" then
pFeatures = library.s.DeviceGeneratedCommandsFeaturesNVX(pFeatures, false)
end
local box = ffi.new("struct VkDeviceGeneratedCommandsLimitsNVX [1]")
library.GetPhysicalDeviceGeneratedCommandsPropertiesNVX(physicalDevice, pFeatures, box)
return box[0]
end
function library.GetRenderAreaGranularity(device, renderPass)
local box = ffi.new("struct VkExtent2D [1]")
CLIB.vkGetRenderAreaGranularity(device, renderPass, box)
return box[0]
end
function library.GetDeviceQueue2(device, pQueueInfo)
if type(pQueueInfo) == "table" then
pQueueInfo = library.s.DeviceQueueInfo2(pQueueInfo, false)
end
local box = ffi.new("struct VkQueue_T * [1]")
CLIB.vkGetDeviceQueue2(device, pQueueInfo, box)
return box[0]
end
function library.GetPhysicalDeviceQueueFamilyProperties(physicalDevice)
local count = ffi.new("uint32_t[1]")
CLIB.vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, count, nil)
local array = ffi.new("struct VkQueueFamilyProperties [?]", count[0])
CLIB.vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetBufferMemoryRequirements2(device, pInfo)
if type(pInfo) == "table" then
pInfo = library.s.BufferMemoryRequirementsInfo2(pInfo, false)
end
local box = ffi.new("struct VkMemoryRequirements2 [1]")
CLIB.vkGetBufferMemoryRequirements2(device, pInfo, box)
return box[0]
end
function library.GetPhysicalDeviceSurfaceCapabilities2(physicalDevice, surface)
local box = ffi.new("struct VkSurfaceCapabilities2EXT [1]")
local status = library.GetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceMemoryProperties2(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceMemoryProperties2 [1]")
CLIB.vkGetPhysicalDeviceMemoryProperties2(physicalDevice, box)
return box[0]
end
function library.GetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo)
if type(pImageFormatInfo) == "table" then
pImageFormatInfo = library.s.PhysicalDeviceImageFormatInfo2(pImageFormatInfo, false)
end
local box = ffi.new("struct VkImageFormatProperties2 [1]")
local status = library.GetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetSwapchainCounter(device, swapchain, counter)
if type(counter) == "table" then
counter = library.e.surface_counter.make_enums(counter)
elseif type(counter) == "string" then
counter = library.e.surface_counter[counter]
end
local box = ffi.new("unsigned long [1]")
local status = library.GetSwapchainCounterEXT(device, swapchain, counter, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex)
local box = ffi.new("unsigned int [1]")
CLIB.vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, box)
return box[0]
end
function library.GetPhysicalDeviceQueueFamilyProperties2(physicalDevice)
local count = ffi.new("uint32_t[1]")
library.GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, count, nil)
local array = ffi.new("struct VkQueueFamilyProperties2 [?]", count[0])
library.GetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetPhysicalDeviceExternalImageFormatPropertie(physicalDevice, format, type, tiling, usage, flags, externalHandleType)
if type(format) == "string" then
format = library.e.format[format]
end
if type(type) == "string" then
type = library.e.image_type[type]
end
if type(tiling) == "string" then
tiling = library.e.image_tiling[tiling]
end
if type(usage) == "table" then
usage = library.e.image_usage.make_enums(usage)
elseif type(usage) == "string" then
usage = library.e.image_usage[usage]
end
if type(flags) == "table" then
flags = library.e.image_create.make_enums(flags)
elseif type(flags) == "string" then
flags = library.e.image_create[flags]
end
if type(externalHandleType) == "table" then
externalHandleType = library.e.external_memory_handle_type.make_enums(externalHandleType)
elseif type(externalHandleType) == "string" then
externalHandleType = library.e.external_memory_handle_type[externalHandleType]
end
local box = ffi.new("struct VkExternalImageFormatPropertiesNV [1]")
local status = library.GetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceProperties2(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceProperties2 [1]")
library.GetPhysicalDeviceProperties2KHR(physicalDevice, box)
return box[0]
end
function library.GetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling)
if type(format) == "string" then
format = library.e.format[format]
end
if type(type) == "string" then
type = library.e.image_type[type]
end
if type(samples) == "table" then
samples = library.e.sample_count.make_enums(samples)
elseif type(samples) == "string" then
samples = library.e.sample_count[samples]
end
if type(usage) == "table" then
usage = library.e.image_usage.make_enums(usage)
elseif type(usage) == "string" then
usage = library.e.image_usage[usage]
end
if type(tiling) == "string" then
tiling = library.e.image_tiling[tiling]
end
local count = ffi.new("uint32_t[1]")
CLIB.vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, count, nil)
local array = ffi.new("struct VkSparseImageFormatProperties [?]", count[0])
CLIB.vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetPhysicalDeviceSurfaceFormats2(physicalDevice, pSurfaceInfo)
if type(pSurfaceInfo) == "table" then
pSurfaceInfo = library.s.PhysicalDeviceSurfaceInfo2KHR(pSurfaceInfo, false)
end
local count = ffi.new("uint32_t[1]")
library.GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, count, nil)
local array = ffi.new("struct VkSurfaceFormat2KHR [?]", count[0])
local status = library.GetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetPhysicalDeviceSurfaceFormats(physicalDevice, surface)
local count = ffi.new("uint32_t[1]")
library.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, count, nil)
local array = ffi.new("struct VkSurfaceFormatKHR [?]", count[0])
local status = library.GetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetImageSubresourceLayout(device, image, pSubresource)
if type(pSubresource) == "table" then
pSubresource = library.s.ImageSubresource(pSubresource, false)
end
local box = ffi.new("struct VkSubresourceLayout [1]")
CLIB.vkGetImageSubresourceLayout(device, image, pSubresource, box)
return box[0]
end
function library.GetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo)
if type(pExternalFenceInfo) == "table" then
pExternalFenceInfo = library.s.PhysicalDeviceExternalFenceInfo(pExternalFenceInfo, false)
end
local box = ffi.new("struct VkExternalFenceProperties [1]")
CLIB.vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, box)
return box[0]
end
function library.GetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo)
if type(pExternalBufferInfo) == "table" then
pExternalBufferInfo = library.s.PhysicalDeviceExternalBufferInfo(pExternalBufferInfo, false)
end
local box = ffi.new("struct VkExternalBufferProperties [1]")
CLIB.vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, box)
return box[0]
end
function library.GetPhysicalDeviceSurfaceCapabilities(physicalDevice, surface)
local box = ffi.new("struct VkSurfaceCapabilitiesKHR [1]")
local status = library.GetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceSurfaceSupport(physicalDevice, queueFamilyIndex, surface)
local box = ffi.new("unsigned int [1]")
local status = library.GetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo)
if type(pFormatInfo) == "table" then
pFormatInfo = library.s.PhysicalDeviceSparseImageFormatInfo2(pFormatInfo, false)
end
local count = ffi.new("uint32_t[1]")
library.GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, count, nil)
local array = ffi.new("struct VkSparseImageFormatProperties2 [?]", count[0])
library.GetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetPhysicalDeviceFeatures(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceFeatures [1]")
CLIB.vkGetPhysicalDeviceFeatures(physicalDevice, box)
return box[0]
end
function library.GetPhysicalDevicePresentRectangles(physicalDevice, surface)
local count = ffi.new("uint32_t[1]")
library.GetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, count, nil)
local array = ffi.new("struct VkRect2D [?]", count[0])
local status = library.GetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetDeviceMemoryCommitment(device, memory)
local box = ffi.new("unsigned long [1]")
CLIB.vkGetDeviceMemoryCommitment(device, memory, box)
return box[0]
end
function library.GetMemoryHostPointerProperties(device, handleType, pHostPointer)
if type(handleType) == "table" then
handleType = library.e.external_memory_handle_type.make_enums(handleType)
elseif type(handleType) == "string" then
handleType = library.e.external_memory_handle_type[handleType]
end
local box = ffi.new("struct VkMemoryHostPointerPropertiesEXT [1]")
local status = library.GetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetValidationCacheData(device, validationCache, pDataSize)
local box = ffi.new("void [1]")
local status = library.GetValidationCacheDataEXT(device, validationCache, pDataSize, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetSemaphoreFd(device, pGetFdInfo)
if type(pGetFdInfo) == "table" then
pGetFdInfo = library.s.SemaphoreGetFdInfoKHR(pGetFdInfo, false)
end
local box = ffi.new("int [1]")
local status = library.GetSemaphoreFdKHR(device, pGetFdInfo, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.AcquireNextImage(device, swapchain, timeout, semaphore, fence)
local box = ffi.new("unsigned int [1]")
local status = library.AcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetImageMemoryRequirements(device, image)
local box = ffi.new("struct VkMemoryRequirements [1]")
CLIB.vkGetImageMemoryRequirements(device, image, box)
return box[0]
end
function library.GetPhysicalDeviceMemoryProperties(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceMemoryProperties [1]")
CLIB.vkGetPhysicalDeviceMemoryProperties(physicalDevice, box)
return box[0]
end
function library.GetPhysicalDeviceSurfaceCapabilities2(physicalDevice, pSurfaceInfo)
if type(pSurfaceInfo) == "table" then
pSurfaceInfo = library.s.PhysicalDeviceSurfaceInfo2KHR(pSurfaceInfo, false)
end
local box = ffi.new("struct VkSurfaceCapabilities2KHR [1]")
local status = library.GetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetBufferMemoryRequirements2(device, pInfo)
if type(pInfo) == "table" then
pInfo = library.s.BufferMemoryRequirementsInfo2(pInfo, false)
end
local box = ffi.new("struct VkMemoryRequirements2 [1]")
library.GetBufferMemoryRequirements2KHR(device, pInfo, box)
return box[0]
end
function library.GetDeviceQueue(device, queueFamilyIndex, queueIndex)
local box = ffi.new("struct VkQueue_T * [1]")
CLIB.vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, box)
return box[0]
end
function library.GetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo)
if type(pImageFormatInfo) == "table" then
pImageFormatInfo = library.s.PhysicalDeviceImageFormatInfo2(pImageFormatInfo, false)
end
local box = ffi.new("struct VkImageFormatProperties2 [1]")
local status = CLIB.vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetMemoryFdProperties(device, handleType, fd)
if type(handleType) == "table" then
handleType = library.e.external_memory_handle_type.make_enums(handleType)
elseif type(handleType) == "string" then
handleType = library.e.external_memory_handle_type[handleType]
end
local box = ffi.new("struct VkMemoryFdPropertiesKHR [1]")
local status = library.GetMemoryFdPropertiesKHR(device, handleType, fd, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetDeviceGroupPresentCapabilities(device)
local box = ffi.new("struct VkDeviceGroupPresentCapabilitiesKHR [1]")
local status = library.GetDeviceGroupPresentCapabilitiesKHR(device, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetPhysicalDeviceFormatProperties(physicalDevice, format)
if type(format) == "string" then
format = library.e.format[format]
end
local box = ffi.new("struct VkFormatProperties [1]")
CLIB.vkGetPhysicalDeviceFormatProperties(physicalDevice, format, box)
return box[0]
end
function library.GetSwapchainImages(device, swapchain)
local count = ffi.new("uint32_t[1]")
library.GetSwapchainImagesKHR(device, swapchain, count, nil)
local array = ffi.new("struct VkImage_T * [?]", count[0])
local status = library.GetSwapchainImagesKHR(device, swapchain, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetDescriptorSetLayoutSupport(device, pCreateInfo)
if type(pCreateInfo) == "table" then
pCreateInfo = library.s.DescriptorSetLayoutCreateInfo(pCreateInfo, false)
end
local box = ffi.new("struct VkDescriptorSetLayoutSupport [1]")
CLIB.vkGetDescriptorSetLayoutSupport(device, pCreateInfo, box)
return box[0]
end
function library.GetPhysicalDeviceFeatures2(physicalDevice)
local box = ffi.new("struct VkPhysicalDeviceFeatures2 [1]")
CLIB.vkGetPhysicalDeviceFeatures2(physicalDevice, box)
return box[0]
end
function library.GetImageMemoryRequirements2(device, pInfo)
if type(pInfo) == "table" then
pInfo = library.s.ImageMemoryRequirementsInfo2(pInfo, false)
end
local box = ffi.new("struct VkMemoryRequirements2 [1]")
CLIB.vkGetImageMemoryRequirements2(device, pInfo, box)
return box[0]
end
function library.GetPhysicalDeviceQueueFamilyProperties2(physicalDevice)
local count = ffi.new("uint32_t[1]")
CLIB.vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, count, nil)
local array = ffi.new("struct VkQueueFamilyProperties2 [?]", count[0])
CLIB.vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetPhysicalDeviceDisplayPlaneProperties(physicalDevice)
local count = ffi.new("uint32_t[1]")
library.GetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, count, nil)
local array = ffi.new("struct VkDisplayPlanePropertiesKHR [?]", count[0])
local status = library.GetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetPhysicalDeviceSurfacePresentModes(physicalDevice, surface)
local count = ffi.new("uint32_t[1]")
library.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, count, nil)
local array = ffi.new("enum VkPresentModeKHR [?]", count[0])
local status = library.GetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetImageMemoryRequirements2(device, pInfo)
if type(pInfo) == "table" then
pInfo = library.s.ImageMemoryRequirementsInfo2(pInfo, false)
end
local box = ffi.new("struct VkMemoryRequirements2 [1]")
library.GetImageMemoryRequirements2KHR(device, pInfo, box)
return box[0]
end
function library.GetDeviceGroupSurfacePresentModes(device, surface)
local box = ffi.new("unsigned int [1]")
local status = library.GetDeviceGroupSurfacePresentModesKHR(device, surface, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.AcquireNextImage2(device, pAcquireInfo)
if type(pAcquireInfo) == "table" then
pAcquireInfo = library.s.AcquireNextImageInfoKHR(pAcquireInfo, false)
end
local box = ffi.new("unsigned int [1]")
local status = library.AcquireNextImage2KHR(device, pAcquireInfo, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.GetImageSparseMemoryRequirements2(device, pInfo)
if type(pInfo) == "table" then
pInfo = library.s.ImageSparseMemoryRequirementsInfo2(pInfo, false)
end
local count = ffi.new("uint32_t[1]")
CLIB.vkGetImageSparseMemoryRequirements2(device, pInfo, count, nil)
local array = ffi.new("struct VkSparseImageMemoryRequirements2 [?]", count[0])
CLIB.vkGetImageSparseMemoryRequirements2(device, pInfo, count, array)
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
function library.GetPhysicalDeviceDisplayProperties(physicalDevice)
local count = ffi.new("uint32_t[1]")
library.GetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, count, nil)
local array = ffi.new("struct VkDisplayPropertiesKHR [?]", count[0])
local status = library.GetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, count, array)
if status == "VK_SUCCESS" then
local out = {}
for i = 0, count[0] - 1 do
out[i + 1] = array[i]
end
return out
end
return nil, status
end
function library.GetShaderInfo(device, pipeline, shaderStage, infoType, pInfoSize)
if type(shaderStage) == "table" then
shaderStage = library.e.shader_stage.make_enums(shaderStage)
elseif type(shaderStage) == "string" then
shaderStage = library.e.shader_stage[shaderStage]
end
if type(infoType) == "string" then
infoType = library.e.shader_info_type[infoType]
end
local box = ffi.new("void [1]")
local status = library.GetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, box)
if status == "VK_SUCCESS" then
return box[0], status
end
return nil, status
end
function library.MapMemory(device, memory, a, b, c, type, func)
local data = ffi.new("void *[1]")
local status = CLIB.vkMapMemory(device, memory, a, b, c, data)
if status == "VK_SUCCESS" then
if func then
local ptr = func(ffi.cast(type .. " *", data[0]))
if ptr then
data[0] = ptr
end
library.UnmapMemory(device, memory)
end
return data[0]
end
return nil, status
end
library.s = {}
function library.s.ApplicationInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_APPLICATION_INFO"
return table_only and tbl or ffi.new("struct VkApplicationInfo", tbl)
end
function library.s.InstanceCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO"
if type(tbl.pApplicationInfo) == "table" then
tbl.pApplicationInfo = library.s.ApplicationInfo(tbl.pApplicationInfo, false)
end
if type(tbl.ppEnabledLayerNames) == "table" then
tbl.enabledLayerCount = #tbl.ppEnabledLayerNames
tbl.ppEnabledLayerNames = library.util.StringList(tbl.ppEnabledLayerNames)
end
if type(tbl.ppEnabledExtensionNames) == "table" then
tbl.enabledExtensionCount = #tbl.ppEnabledExtensionNames
tbl.ppEnabledExtensionNames = library.util.StringList(tbl.ppEnabledExtensionNames)
end
return table_only and tbl or ffi.new("struct VkInstanceCreateInfo", tbl)
end
function library.s.DeviceQueueCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.device_queue_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.device_queue_create[tbl.flags]
end
return table_only and tbl or ffi.new("struct VkDeviceQueueCreateInfo", tbl)
end
function library.s.DeviceCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO"
if type(tbl.pQueueCreateInfos) == "table" then
if not tbl.queueCreateInfoCount then
tbl.queueCreateInfoCount = #tbl.pQueueCreateInfos
end
tbl.pQueueCreateInfos = library.s.DeviceQueueCreateInfoArray(tbl.pQueueCreateInfos, false)
end
if type(tbl.ppEnabledLayerNames) == "table" then
tbl.enabledLayerCount = #tbl.ppEnabledLayerNames
tbl.ppEnabledLayerNames = library.util.StringList(tbl.ppEnabledLayerNames)
end
if type(tbl.ppEnabledExtensionNames) == "table" then
tbl.enabledExtensionCount = #tbl.ppEnabledExtensionNames
tbl.ppEnabledExtensionNames = library.util.StringList(tbl.ppEnabledExtensionNames)
end
if type(tbl.pEnabledFeatures) == "table" then
tbl.pEnabledFeatures = library.s.PhysicalDeviceFeatures(tbl.pEnabledFeatures, false)
end
return table_only and tbl or ffi.new("struct VkDeviceCreateInfo", tbl)
end
function library.s.SubmitInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SUBMIT_INFO"
if type(tbl.pWaitSemaphores) == "table" then
if not tbl.waitSemaphoreCount then
tbl.waitSemaphoreCount = #tbl.pWaitSemaphores
end
tbl.pWaitSemaphores = library.s.SemaphoreArray(tbl.pWaitSemaphores, false)
end
if type(tbl.pCommandBuffers) == "table" then
if not tbl.commandBufferCount then
tbl.commandBufferCount = #tbl.pCommandBuffers
end
tbl.pCommandBuffers = library.s.CommandBufferArray(tbl.pCommandBuffers, false)
end
if type(tbl.pSignalSemaphores) == "table" then
if not tbl.signalSemaphoreCount then
tbl.signalSemaphoreCount = #tbl.pSignalSemaphores
end
tbl.pSignalSemaphores = library.s.SemaphoreArray(tbl.pSignalSemaphores, false)
end
return table_only and tbl or ffi.new("struct VkSubmitInfo", tbl)
end
function library.s.MemoryAllocateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO"
return table_only and tbl or ffi.new("struct VkMemoryAllocateInfo", tbl)
end
function library.s.MappedMemoryRange(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE"
return table_only and tbl or ffi.new("struct VkMappedMemoryRange", tbl)
end
function library.s.BindSparseInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO"
if type(tbl.pWaitSemaphores) == "table" then
if not tbl.waitSemaphoreCount then
tbl.waitSemaphoreCount = #tbl.pWaitSemaphores
end
tbl.pWaitSemaphores = library.s.SemaphoreArray(tbl.pWaitSemaphores, false)
end
if type(tbl.pBufferBinds) == "table" then
if not tbl.bufferBindCount then
tbl.bufferBindCount = #tbl.pBufferBinds
end
tbl.pBufferBinds = library.s.SparseBufferMemoryBindInfoArray(tbl.pBufferBinds, false)
end
if type(tbl.pImageOpaqueBinds) == "table" then
if not tbl.imageOpaqueBindCount then
tbl.imageOpaqueBindCount = #tbl.pImageOpaqueBinds
end
tbl.pImageOpaqueBinds = library.s.SparseImageOpaqueMemoryBindInfoArray(tbl.pImageOpaqueBinds, false)
end
if type(tbl.pImageBinds) == "table" then
if not tbl.imageBindCount then
tbl.imageBindCount = #tbl.pImageBinds
end
tbl.pImageBinds = library.s.SparseImageMemoryBindInfoArray(tbl.pImageBinds, false)
end
if type(tbl.pSignalSemaphores) == "table" then
if not tbl.signalSemaphoreCount then
tbl.signalSemaphoreCount = #tbl.pSignalSemaphores
end
tbl.pSignalSemaphores = library.s.SemaphoreArray(tbl.pSignalSemaphores, false)
end
return table_only and tbl or ffi.new("struct VkBindSparseInfo", tbl)
end
function library.s.FenceCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.fence_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.fence_create[tbl.flags]
end
return table_only and tbl or ffi.new("struct VkFenceCreateInfo", tbl)
end
function library.s.SemaphoreCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO"
return table_only and tbl or ffi.new("struct VkSemaphoreCreateInfo", tbl)
end
function library.s.EventCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO"
return table_only and tbl or ffi.new("struct VkEventCreateInfo", tbl)
end
function library.s.QueryPoolCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO"
if type(tbl.queryType) == "string" then
tbl.queryType = library.e.query_type[tbl.queryType]
end
if type(tbl.pipelineStatistics) == "table" then
tbl.pipelineStatistics = library.e.query_pipeline_statistic.make_enums(tbl.pipelineStatistics)
elseif type(tbl.pipelineStatistics) == "string" then
tbl.pipelineStatistics = library.e.query_pipeline_statistic[tbl.pipelineStatistics]
end
return table_only and tbl or ffi.new("struct VkQueryPoolCreateInfo", tbl)
end
function library.s.BufferCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.buffer_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.buffer_create[tbl.flags]
end
if type(tbl.usage) == "table" then
tbl.usage = library.e.buffer_usage.make_enums(tbl.usage)
elseif type(tbl.usage) == "string" then
tbl.usage = library.e.buffer_usage[tbl.usage]
end
if type(tbl.sharingMode) == "string" then
tbl.sharingMode = library.e.sharing_mode[tbl.sharingMode]
end
return table_only and tbl or ffi.new("struct VkBufferCreateInfo", tbl)
end
function library.s.BufferViewCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO"
if type(tbl.format) == "string" then
tbl.format = library.e.format[tbl.format]
end
return table_only and tbl or ffi.new("struct VkBufferViewCreateInfo", tbl)
end
function library.s.ImageCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.image_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.image_create[tbl.flags]
end
if type(tbl.imageType) == "string" then
tbl.imageType = library.e.image_type[tbl.imageType]
end
if type(tbl.format) == "string" then
tbl.format = library.e.format[tbl.format]
end
if type(tbl.extent) == "table" then
tbl.extent = library.s.Extent3D(tbl.extent, true)
end
if type(tbl.samples) == "table" then
tbl.samples = library.e.sample_count.make_enums(tbl.samples)
elseif type(tbl.samples) == "string" then
tbl.samples = library.e.sample_count[tbl.samples]
end
if type(tbl.tiling) == "string" then
tbl.tiling = library.e.image_tiling[tbl.tiling]
end
if type(tbl.usage) == "table" then
tbl.usage = library.e.image_usage.make_enums(tbl.usage)
elseif type(tbl.usage) == "string" then
tbl.usage = library.e.image_usage[tbl.usage]
end
if type(tbl.sharingMode) == "string" then
tbl.sharingMode = library.e.sharing_mode[tbl.sharingMode]
end
if type(tbl.initialLayout) == "string" then
tbl.initialLayout = library.e.image_layout[tbl.initialLayout]
end
return table_only and tbl or ffi.new("struct VkImageCreateInfo", tbl)
end
function library.s.ImageViewCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO"
if type(tbl.viewType) == "string" then
tbl.viewType = library.e.image_view_type[tbl.viewType]
end
if type(tbl.format) == "string" then
tbl.format = library.e.format[tbl.format]
end
if type(tbl.components) == "table" then
tbl.components = library.s.ComponentMapping(tbl.components, true)
end
if type(tbl.subresourceRange) == "table" then
tbl.subresourceRange = library.s.ImageSubresourceRange(tbl.subresourceRange, true)
end
return table_only and tbl or ffi.new("struct VkImageViewCreateInfo", tbl)
end
function library.s.ShaderModuleCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO"
return table_only and tbl or ffi.new("struct VkShaderModuleCreateInfo", tbl)
end
function library.s.PipelineCacheCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO"
return table_only and tbl or ffi.new("struct VkPipelineCacheCreateInfo", tbl)
end
function library.s.PipelineShaderStageCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO"
if type(tbl.stage) == "table" then
tbl.stage = library.e.shader_stage.make_enums(tbl.stage)
elseif type(tbl.stage) == "string" then
tbl.stage = library.e.shader_stage[tbl.stage]
end
if type(tbl.pSpecializationInfo) == "table" then
tbl.pSpecializationInfo = library.s.SpecializationInfo(tbl.pSpecializationInfo, false)
end
return table_only and tbl or ffi.new("struct VkPipelineShaderStageCreateInfo", tbl)
end
function library.s.PipelineVertexInputStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO"
if type(tbl.pVertexBindingDescriptions) == "table" then
if not tbl.vertexBindingDescriptionCount then
tbl.vertexBindingDescriptionCount = #tbl.pVertexBindingDescriptions
end
tbl.pVertexBindingDescriptions = library.s.VertexInputBindingDescriptionArray(tbl.pVertexBindingDescriptions, false)
end
if type(tbl.pVertexAttributeDescriptions) == "table" then
if not tbl.vertexAttributeDescriptionCount then
tbl.vertexAttributeDescriptionCount = #tbl.pVertexAttributeDescriptions
end
tbl.pVertexAttributeDescriptions = library.s.VertexInputAttributeDescriptionArray(tbl.pVertexAttributeDescriptions, false)
end
return table_only and tbl or ffi.new("struct VkPipelineVertexInputStateCreateInfo", tbl)
end
function library.s.PipelineInputAssemblyStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO"
if type(tbl.topology) == "string" then
tbl.topology = library.e.primitive_topology[tbl.topology]
end
tbl.primitiveRestartEnable = tbl.primitiveRestartEnable and 1 or 0
return table_only and tbl or ffi.new("struct VkPipelineInputAssemblyStateCreateInfo", tbl)
end
function library.s.PipelineTessellationStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO"
return table_only and tbl or ffi.new("struct VkPipelineTessellationStateCreateInfo", tbl)
end
function library.s.PipelineViewportStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO"
if type(tbl.pViewports) == "table" then
if not tbl.viewportCount then
tbl.viewportCount = #tbl.pViewports
end
tbl.pViewports = library.s.ViewportArray(tbl.pViewports, false)
end
if type(tbl.pScissors) == "table" then
if not tbl.scissorCount then
tbl.scissorCount = #tbl.pScissors
end
tbl.pScissors = library.s.Rect2DArray(tbl.pScissors, false)
end
return table_only and tbl or ffi.new("struct VkPipelineViewportStateCreateInfo", tbl)
end
function library.s.PipelineRasterizationStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO"
tbl.depthClampEnable = tbl.depthClampEnable and 1 or 0
tbl.rasterizerDiscardEnable = tbl.rasterizerDiscardEnable and 1 or 0
if type(tbl.polygonMode) == "string" then
tbl.polygonMode = library.e.polygon_mode[tbl.polygonMode]
end
if type(tbl.cullMode) == "table" then
tbl.cullMode = library.e.cull_mode.make_enums(tbl.cullMode)
elseif type(tbl.cullMode) == "string" then
tbl.cullMode = library.e.cull_mode[tbl.cullMode]
end
if type(tbl.frontFace) == "string" then
tbl.frontFace = library.e.front_face[tbl.frontFace]
end
tbl.depthBiasEnable = tbl.depthBiasEnable and 1 or 0
return table_only and tbl or ffi.new("struct VkPipelineRasterizationStateCreateInfo", tbl)
end
function library.s.PipelineMultisampleStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO"
if type(tbl.rasterizationSamples) == "table" then
tbl.rasterizationSamples = library.e.sample_count.make_enums(tbl.rasterizationSamples)
elseif type(tbl.rasterizationSamples) == "string" then
tbl.rasterizationSamples = library.e.sample_count[tbl.rasterizationSamples]
end
tbl.sampleShadingEnable = tbl.sampleShadingEnable and 1 or 0
tbl.alphaToCoverageEnable = tbl.alphaToCoverageEnable and 1 or 0
tbl.alphaToOneEnable = tbl.alphaToOneEnable and 1 or 0
return table_only and tbl or ffi.new("struct VkPipelineMultisampleStateCreateInfo", tbl)
end
function library.s.PipelineDepthStencilStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO"
tbl.depthTestEnable = tbl.depthTestEnable and 1 or 0
tbl.depthWriteEnable = tbl.depthWriteEnable and 1 or 0
if type(tbl.depthCompareOp) == "string" then
tbl.depthCompareOp = library.e.compare_op[tbl.depthCompareOp]
end
tbl.depthBoundsTestEnable = tbl.depthBoundsTestEnable and 1 or 0
tbl.stencilTestEnable = tbl.stencilTestEnable and 1 or 0
if type(tbl.front) == "table" then
tbl.front = library.s.StencilOpState(tbl.front, true)
end
if type(tbl.back) == "table" then
tbl.back = library.s.StencilOpState(tbl.back, true)
end
return table_only and tbl or ffi.new("struct VkPipelineDepthStencilStateCreateInfo", tbl)
end
function library.s.PipelineColorBlendStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO"
tbl.logicOpEnable = tbl.logicOpEnable and 1 or 0
if type(tbl.logicOp) == "string" then
tbl.logicOp = library.e.logic_op[tbl.logicOp]
end
if type(tbl.pAttachments) == "table" then
if not tbl.attachmentCount then
tbl.attachmentCount = #tbl.pAttachments
end
tbl.pAttachments = library.s.PipelineColorBlendAttachmentStateArray(tbl.pAttachments, false)
end
return table_only and tbl or ffi.new("struct VkPipelineColorBlendStateCreateInfo", tbl)
end
function library.s.PipelineDynamicStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO"
if type(tbl.pDynamicStates) == "string" then
tbl.pDynamicStates = library.e.dynamic_state[tbl.pDynamicStates]
end
return table_only and tbl or ffi.new("struct VkPipelineDynamicStateCreateInfo", tbl)
end
function library.s.GraphicsPipelineCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.pipeline_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.pipeline_create[tbl.flags]
end
if type(tbl.pStages) == "table" then
if not tbl.stageCount then
tbl.stageCount = #tbl.pStages
end
tbl.pStages = library.s.PipelineShaderStageCreateInfoArray(tbl.pStages, false)
end
if type(tbl.pVertexInputState) == "table" then
tbl.pVertexInputState = library.s.PipelineVertexInputStateCreateInfo(tbl.pVertexInputState, false)
end
if type(tbl.pInputAssemblyState) == "table" then
tbl.pInputAssemblyState = library.s.PipelineInputAssemblyStateCreateInfo(tbl.pInputAssemblyState, false)
end
if type(tbl.pTessellationState) == "table" then
tbl.pTessellationState = library.s.PipelineTessellationStateCreateInfo(tbl.pTessellationState, false)
end
if type(tbl.pViewportState) == "table" then
tbl.pViewportState = library.s.PipelineViewportStateCreateInfo(tbl.pViewportState, false)
end
if type(tbl.pRasterizationState) == "table" then
tbl.pRasterizationState = library.s.PipelineRasterizationStateCreateInfo(tbl.pRasterizationState, false)
end
if type(tbl.pMultisampleState) == "table" then
tbl.pMultisampleState = library.s.PipelineMultisampleStateCreateInfo(tbl.pMultisampleState, false)
end
if type(tbl.pDepthStencilState) == "table" then
tbl.pDepthStencilState = library.s.PipelineDepthStencilStateCreateInfo(tbl.pDepthStencilState, false)
end
if type(tbl.pColorBlendState) == "table" then
tbl.pColorBlendState = library.s.PipelineColorBlendStateCreateInfo(tbl.pColorBlendState, false)
end
if type(tbl.pDynamicState) == "table" then
tbl.pDynamicState = library.s.PipelineDynamicStateCreateInfo(tbl.pDynamicState, false)
end
return table_only and tbl or ffi.new("struct VkGraphicsPipelineCreateInfo", tbl)
end
function library.s.ComputePipelineCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.pipeline_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.pipeline_create[tbl.flags]
end
if type(tbl.stage) == "table" then
tbl.stage = library.s.PipelineShaderStageCreateInfo(tbl.stage, true)
end
return table_only and tbl or ffi.new("struct VkComputePipelineCreateInfo", tbl)
end
function library.s.PipelineLayoutCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO"
if type(tbl.pSetLayouts) == "table" then
if not tbl.setLayoutCount then
tbl.setLayoutCount = #tbl.pSetLayouts
end
tbl.pSetLayouts = library.s.DescriptorSetLayoutArray(tbl.pSetLayouts, false)
end
if type(tbl.pPushConstantRanges) == "table" then
if not tbl.pushConstantRangeCount then
tbl.pushConstantRangeCount = #tbl.pPushConstantRanges
end
tbl.pPushConstantRanges = library.s.PushConstantRangeArray(tbl.pPushConstantRanges, false)
end
return table_only and tbl or ffi.new("struct VkPipelineLayoutCreateInfo", tbl)
end
function library.s.SamplerCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO"
if type(tbl.magFilter) == "string" then
tbl.magFilter = library.e.filter[tbl.magFilter]
end
if type(tbl.minFilter) == "string" then
tbl.minFilter = library.e.filter[tbl.minFilter]
end
if type(tbl.mipmapMode) == "string" then
tbl.mipmapMode = library.e.sampler_mipmap_mode[tbl.mipmapMode]
end
if type(tbl.addressModeU) == "string" then
tbl.addressModeU = library.e.sampler_address_mode[tbl.addressModeU]
end
if type(tbl.addressModeV) == "string" then
tbl.addressModeV = library.e.sampler_address_mode[tbl.addressModeV]
end
if type(tbl.addressModeW) == "string" then
tbl.addressModeW = library.e.sampler_address_mode[tbl.addressModeW]
end
tbl.anisotropyEnable = tbl.anisotropyEnable and 1 or 0
tbl.compareEnable = tbl.compareEnable and 1 or 0
if type(tbl.compareOp) == "string" then
tbl.compareOp = library.e.compare_op[tbl.compareOp]
end
if type(tbl.borderColor) == "string" then
tbl.borderColor = library.e.border_color[tbl.borderColor]
end
return table_only and tbl or ffi.new("struct VkSamplerCreateInfo", tbl)
end
function library.s.DescriptorSetLayoutCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.descriptor_set_layout_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.descriptor_set_layout_create[tbl.flags]
end
if type(tbl.pBindings) == "table" then
if not tbl.bindingCount then
tbl.bindingCount = #tbl.pBindings
end
tbl.pBindings = library.s.DescriptorSetLayoutBindingArray(tbl.pBindings, false)
end
return table_only and tbl or ffi.new("struct VkDescriptorSetLayoutCreateInfo", tbl)
end
function library.s.DescriptorPoolCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.descriptor_pool_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.descriptor_pool_create[tbl.flags]
end
if type(tbl.pPoolSizes) == "table" then
if not tbl.poolSizeCount then
tbl.poolSizeCount = #tbl.pPoolSizes
end
tbl.pPoolSizes = library.s.DescriptorPoolSizeArray(tbl.pPoolSizes, false)
end
return table_only and tbl or ffi.new("struct VkDescriptorPoolCreateInfo", tbl)
end
function library.s.DescriptorSetAllocateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO"
if type(tbl.pSetLayouts) == "table" then
if not tbl.descriptorSetCount then
tbl.descriptorSetCount = #tbl.pSetLayouts
end
tbl.pSetLayouts = library.s.DescriptorSetLayoutArray(tbl.pSetLayouts, false)
end
return table_only and tbl or ffi.new("struct VkDescriptorSetAllocateInfo", tbl)
end
function library.s.WriteDescriptorSet(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET"
if type(tbl.descriptorType) == "string" then
tbl.descriptorType = library.e.descriptor_type[tbl.descriptorType]
end
if type(tbl.pImageInfo) == "table" then
if not tbl.descriptorCount then
tbl.descriptorCount = #tbl.pImageInfo
end
tbl.pImageInfo = library.s.DescriptorImageInfoArray(tbl.pImageInfo)
end
if type(tbl.pBufferInfo) == "table" then
if not tbl.descriptorCount then
tbl.descriptorCount = #tbl.pBufferInfo
end
tbl.pBufferInfo = library.s.DescriptorBufferInfoArray(tbl.pBufferInfo)
end
if type(tbl.pTexelBufferView) == "table" then
if not tbl.descriptorCount then
tbl.descriptorCount = #tbl.pTexelBufferView
end
tbl.pTexelBufferView = library.s.BufferViewArray(tbl.pTexelBufferView)
end
return table_only and tbl or ffi.new("struct VkWriteDescriptorSet", tbl)
end
function library.s.CopyDescriptorSet(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET"
return table_only and tbl or ffi.new("struct VkCopyDescriptorSet", tbl)
end
function library.s.FramebufferCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO"
if type(tbl.pAttachments) == "table" then
if not tbl.attachmentCount then
tbl.attachmentCount = #tbl.pAttachments
end
tbl.pAttachments = library.s.ImageViewArray(tbl.pAttachments, false)
end
return table_only and tbl or ffi.new("struct VkFramebufferCreateInfo", tbl)
end
function library.s.RenderPassCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO"
if type(tbl.pAttachments) == "table" then
if not tbl.attachmentCount then
tbl.attachmentCount = #tbl.pAttachments
end
tbl.pAttachments = library.s.AttachmentDescriptionArray(tbl.pAttachments, false)
end
if type(tbl.pSubpasses) == "table" then
if not tbl.subpassCount then
tbl.subpassCount = #tbl.pSubpasses
end
tbl.pSubpasses = library.s.SubpassDescriptionArray(tbl.pSubpasses, false)
end
if type(tbl.pDependencies) == "table" then
if not tbl.dependencyCount then
tbl.dependencyCount = #tbl.pDependencies
end
tbl.pDependencies = library.s.SubpassDependencyArray(tbl.pDependencies, false)
end
return table_only and tbl or ffi.new("struct VkRenderPassCreateInfo", tbl)
end
function library.s.CommandPoolCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.command_pool_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.command_pool_create[tbl.flags]
end
return table_only and tbl or ffi.new("struct VkCommandPoolCreateInfo", tbl)
end
function library.s.CommandBufferAllocateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO"
if type(tbl.level) == "string" then
tbl.level = library.e.command_buffer_level[tbl.level]
end
return table_only and tbl or ffi.new("struct VkCommandBufferAllocateInfo", tbl)
end
function library.s.CommandBufferInheritanceInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO"
tbl.occlusionQueryEnable = tbl.occlusionQueryEnable and 1 or 0
if type(tbl.queryFlags) == "table" then
tbl.queryFlags = library.e.query_control.make_enums(tbl.queryFlags)
elseif type(tbl.queryFlags) == "string" then
tbl.queryFlags = library.e.query_control[tbl.queryFlags]
end
if type(tbl.pipelineStatistics) == "table" then
tbl.pipelineStatistics = library.e.query_pipeline_statistic.make_enums(tbl.pipelineStatistics)
elseif type(tbl.pipelineStatistics) == "string" then
tbl.pipelineStatistics = library.e.query_pipeline_statistic[tbl.pipelineStatistics]
end
return table_only and tbl or ffi.new("struct VkCommandBufferInheritanceInfo", tbl)
end
function library.s.CommandBufferBeginInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.command_buffer_usage.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.command_buffer_usage[tbl.flags]
end
if type(tbl.pInheritanceInfo) == "table" then
tbl.pInheritanceInfo = library.s.CommandBufferInheritanceInfo(tbl.pInheritanceInfo, false)
end
return table_only and tbl or ffi.new("struct VkCommandBufferBeginInfo", tbl)
end
function library.s.RenderPassBeginInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO"
if type(tbl.renderArea) == "table" then
tbl.renderArea = library.s.Rect2D(tbl.renderArea, true)
end
if type(tbl.pClearValues) == "table" then
if not tbl.clearValueCount then
tbl.clearValueCount = #tbl.pClearValues
end
tbl.pClearValues = library.s.ClearValueArray(tbl.pClearValues, false)
end
return table_only and tbl or ffi.new("struct VkRenderPassBeginInfo", tbl)
end
function library.s.BufferMemoryBarrier(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER"
if type(tbl.srcAccessMask) == "table" then
tbl.srcAccessMask = library.e.access.make_enums(tbl.srcAccessMask)
elseif type(tbl.srcAccessMask) == "string" then
tbl.srcAccessMask = library.e.access[tbl.srcAccessMask]
end
if type(tbl.dstAccessMask) == "table" then
tbl.dstAccessMask = library.e.access.make_enums(tbl.dstAccessMask)
elseif type(tbl.dstAccessMask) == "string" then
tbl.dstAccessMask = library.e.access[tbl.dstAccessMask]
end
return table_only and tbl or ffi.new("struct VkBufferMemoryBarrier", tbl)
end
function library.s.ImageMemoryBarrier(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER"
if type(tbl.srcAccessMask) == "table" then
tbl.srcAccessMask = library.e.access.make_enums(tbl.srcAccessMask)
elseif type(tbl.srcAccessMask) == "string" then
tbl.srcAccessMask = library.e.access[tbl.srcAccessMask]
end
if type(tbl.dstAccessMask) == "table" then
tbl.dstAccessMask = library.e.access.make_enums(tbl.dstAccessMask)
elseif type(tbl.dstAccessMask) == "string" then
tbl.dstAccessMask = library.e.access[tbl.dstAccessMask]
end
if type(tbl.oldLayout) == "string" then
tbl.oldLayout = library.e.image_layout[tbl.oldLayout]
end
if type(tbl.newLayout) == "string" then
tbl.newLayout = library.e.image_layout[tbl.newLayout]
end
if type(tbl.subresourceRange) == "table" then
tbl.subresourceRange = library.s.ImageSubresourceRange(tbl.subresourceRange, true)
end
return table_only and tbl or ffi.new("struct VkImageMemoryBarrier", tbl)
end
function library.s.MemoryBarrier(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_MEMORY_BARRIER"
if type(tbl.srcAccessMask) == "table" then
tbl.srcAccessMask = library.e.access.make_enums(tbl.srcAccessMask)
elseif type(tbl.srcAccessMask) == "string" then
tbl.srcAccessMask = library.e.access[tbl.srcAccessMask]
end
if type(tbl.dstAccessMask) == "table" then
tbl.dstAccessMask = library.e.access.make_enums(tbl.dstAccessMask)
elseif type(tbl.dstAccessMask) == "string" then
tbl.dstAccessMask = library.e.access[tbl.dstAccessMask]
end
return table_only and tbl or ffi.new("struct VkMemoryBarrier", tbl)
end
function library.s.PhysicalDeviceSubgroupProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES"
if type(tbl.supportedStages) == "table" then
tbl.supportedStages = library.e.shader_stage.make_enums(tbl.supportedStages)
elseif type(tbl.supportedStages) == "string" then
tbl.supportedStages = library.e.shader_stage[tbl.supportedStages]
end
if type(tbl.supportedOperations) == "table" then
tbl.supportedOperations = library.e.subgroup_feature.make_enums(tbl.supportedOperations)
elseif type(tbl.supportedOperations) == "string" then
tbl.supportedOperations = library.e.subgroup_feature[tbl.supportedOperations]
end
return table_only and tbl or ffi.new("struct VkPhysicalDeviceSubgroupProperties", tbl)
end
function library.s.BindBufferMemoryInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO"
return table_only and tbl or ffi.new("struct VkBindBufferMemoryInfo", tbl)
end
function library.s.BindImageMemoryInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO"
return table_only and tbl or ffi.new("struct VkBindImageMemoryInfo", tbl)
end
function library.s.MemoryDedicatedRequirements(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS"
return table_only and tbl or ffi.new("struct VkMemoryDedicatedRequirements", tbl)
end
function library.s.MemoryDedicatedAllocateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO"
return table_only and tbl or ffi.new("struct VkMemoryDedicatedAllocateInfo", tbl)
end
function library.s.MemoryAllocateFlagsInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.memory_allocate.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.memory_allocate[tbl.flags]
end
return table_only and tbl or ffi.new("struct VkMemoryAllocateFlagsInfo", tbl)
end
function library.s.DeviceGroupRenderPassBeginInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO"
if type(tbl.pDeviceRenderAreas) == "table" then
if not tbl.deviceRenderAreaCount then
tbl.deviceRenderAreaCount = #tbl.pDeviceRenderAreas
end
tbl.pDeviceRenderAreas = library.s.Rect2DArray(tbl.pDeviceRenderAreas, false)
end
return table_only and tbl or ffi.new("struct VkDeviceGroupRenderPassBeginInfo", tbl)
end
function library.s.DeviceGroupCommandBufferBeginInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO"
return table_only and tbl or ffi.new("struct VkDeviceGroupCommandBufferBeginInfo", tbl)
end
function library.s.DeviceGroupSubmitInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO"
return table_only and tbl or ffi.new("struct VkDeviceGroupSubmitInfo", tbl)
end
function library.s.DeviceGroupBindSparseInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO"
return table_only and tbl or ffi.new("struct VkDeviceGroupBindSparseInfo", tbl)
end
function library.s.BindBufferMemoryDeviceGroupInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO"
return table_only and tbl or ffi.new("struct VkBindBufferMemoryDeviceGroupInfo", tbl)
end
function library.s.BindImageMemoryDeviceGroupInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO"
if type(tbl.pSplitInstanceBindRegions) == "table" then
if not tbl.splitInstanceBindRegionCount then
tbl.splitInstanceBindRegionCount = #tbl.pSplitInstanceBindRegions
end
tbl.pSplitInstanceBindRegions = library.s.Rect2DArray(tbl.pSplitInstanceBindRegions, false)
end
return table_only and tbl or ffi.new("struct VkBindImageMemoryDeviceGroupInfo", tbl)
end
function library.s.PhysicalDeviceGroupProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES"
if type(tbl.physicalDevices) == "table" then
if not tbl.physicalDeviceCount then
tbl.physicalDeviceCount = #tbl.physicalDevices
end
tbl.physicalDevices = library.s.PhysicalDeviceArray(tbl.physicalDevices, false)
end
return table_only and tbl or ffi.new("struct VkPhysicalDeviceGroupProperties", tbl)
end
function library.s.DeviceGroupDeviceCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO"
if type(tbl.pPhysicalDevices) == "table" then
if not tbl.physicalDeviceCount then
tbl.physicalDeviceCount = #tbl.pPhysicalDevices
end
tbl.pPhysicalDevices = library.s.PhysicalDeviceArray(tbl.pPhysicalDevices, false)
end
return table_only and tbl or ffi.new("struct VkDeviceGroupDeviceCreateInfo", tbl)
end
function library.s.PhysicalDevicePointClippingProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES"
if type(tbl.pointClippingBehavior) == "string" then
tbl.pointClippingBehavior = library.e.point_clipping_behavior[tbl.pointClippingBehavior]
end
return table_only and tbl or ffi.new("struct VkPhysicalDevicePointClippingProperties", tbl)
end
function library.s.RenderPassInputAttachmentAspectCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO"
if type(tbl.pAspectReferences) == "table" then
if not tbl.aspectReferenceCount then
tbl.aspectReferenceCount = #tbl.pAspectReferences
end
tbl.pAspectReferences = library.s.InputAttachmentAspectReferenceArray(tbl.pAspectReferences, false)
end
return table_only and tbl or ffi.new("struct VkRenderPassInputAttachmentAspectCreateInfo", tbl)
end
function library.s.ImageViewUsageCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO"
if type(tbl.usage) == "table" then
tbl.usage = library.e.image_usage.make_enums(tbl.usage)
elseif type(tbl.usage) == "string" then
tbl.usage = library.e.image_usage[tbl.usage]
end
return table_only and tbl or ffi.new("struct VkImageViewUsageCreateInfo", tbl)
end
function library.s.PipelineTessellationDomainOriginStateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO"
if type(tbl.domainOrigin) == "string" then
tbl.domainOrigin = library.e.tessellation_domain_origin[tbl.domainOrigin]
end
return table_only and tbl or ffi.new("struct VkPipelineTessellationDomainOriginStateCreateInfo", tbl)
end
function library.s.RenderPassMultiviewCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO"
return table_only and tbl or ffi.new("struct VkRenderPassMultiviewCreateInfo", tbl)
end
function library.s.PhysicalDeviceMultiviewFeatures(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES"
return table_only and tbl or ffi.new("struct VkPhysicalDeviceMultiviewFeatures", tbl)
end
function library.s.PhysicalDeviceMultiviewProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES"
return table_only and tbl or ffi.new("struct VkPhysicalDeviceMultiviewProperties", tbl)
end
function library.s.PhysicalDeviceVariablePointerFeatures(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES"
return table_only and tbl or ffi.new("struct VkPhysicalDeviceVariablePointerFeatures", tbl)
end
function library.s.ProtectedSubmitInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO"
return table_only and tbl or ffi.new("struct VkProtectedSubmitInfo", tbl)
end
function library.s.PhysicalDeviceProtectedMemoryFeatures(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES"
return table_only and tbl or ffi.new("struct VkPhysicalDeviceProtectedMemoryFeatures", tbl)
end
function library.s.PhysicalDeviceProtectedMemoryProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES"
return table_only and tbl or ffi.new("struct VkPhysicalDeviceProtectedMemoryProperties", tbl)
end
function library.s.SamplerYcbcrConversionCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO"
if type(tbl.format) == "string" then
tbl.format = library.e.format[tbl.format]
end
if type(tbl.ycbcrModel) == "string" then
tbl.ycbcrModel = library.e.sampler_ycbcr_model_conversion[tbl.ycbcrModel]
end
if type(tbl.ycbcrRange) == "string" then
tbl.ycbcrRange = library.e.sampler_ycbcr_range[tbl.ycbcrRange]
end
if type(tbl.components) == "table" then
tbl.components = library.s.ComponentMapping(tbl.components, true)
end
if type(tbl.xChromaOffset) == "string" then
tbl.xChromaOffset = library.e.chroma_location[tbl.xChromaOffset]
end
if type(tbl.yChromaOffset) == "string" then
tbl.yChromaOffset = library.e.chroma_location[tbl.yChromaOffset]
end
if type(tbl.chromaFilter) == "string" then
tbl.chromaFilter = library.e.filter[tbl.chromaFilter]
end
return table_only and tbl or ffi.new("struct VkSamplerYcbcrConversionCreateInfo", tbl)
end
function library.s.SamplerYcbcrConversionInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO"
return table_only and tbl or ffi.new("struct VkSamplerYcbcrConversionInfo", tbl)
end
function library.s.BindImagePlaneMemoryInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO"
if type(tbl.planeAspect) == "table" then
tbl.planeAspect = library.e.image_aspect.make_enums(tbl.planeAspect)
elseif type(tbl.planeAspect) == "string" then
tbl.planeAspect = library.e.image_aspect[tbl.planeAspect]
end
return table_only and tbl or ffi.new("struct VkBindImagePlaneMemoryInfo", tbl)
end
function library.s.ImagePlaneMemoryRequirementsInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO"
if type(tbl.planeAspect) == "table" then
tbl.planeAspect = library.e.image_aspect.make_enums(tbl.planeAspect)
elseif type(tbl.planeAspect) == "string" then
tbl.planeAspect = library.e.image_aspect[tbl.planeAspect]
end
return table_only and tbl or ffi.new("struct VkImagePlaneMemoryRequirementsInfo", tbl)
end
function library.s.PhysicalDeviceSamplerYcbcrConversionFeatures(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES"
return table_only and tbl or ffi.new("struct VkPhysicalDeviceSamplerYcbcrConversionFeatures", tbl)
end
function library.s.SamplerYcbcrConversionImageFormatProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES"
return table_only and tbl or ffi.new("struct VkSamplerYcbcrConversionImageFormatProperties", tbl)
end
function library.s.DescriptorUpdateTemplateCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO"
if type(tbl.pDescriptorUpdateEntries) == "table" then
if not tbl.descriptorUpdateEntryCount then
tbl.descriptorUpdateEntryCount = #tbl.pDescriptorUpdateEntries
end
tbl.pDescriptorUpdateEntries = library.s.DescriptorUpdateTemplateEntryArray(tbl.pDescriptorUpdateEntries, false)
end
if type(tbl.templateType) == "string" then
tbl.templateType = library.e.descriptor_update_template_type[tbl.templateType]
end
if type(tbl.pipelineBindPoint) == "string" then
tbl.pipelineBindPoint = library.e.pipeline_bind_point[tbl.pipelineBindPoint]
end
return table_only and tbl or ffi.new("struct VkDescriptorUpdateTemplateCreateInfo", tbl)
end
function library.s.PhysicalDeviceExternalImageFormatInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO"
if type(tbl.handleType) == "table" then
tbl.handleType = library.e.external_memory_handle_type.make_enums(tbl.handleType)
elseif type(tbl.handleType) == "string" then
tbl.handleType = library.e.external_memory_handle_type[tbl.handleType]
end
return table_only and tbl or ffi.new("struct VkPhysicalDeviceExternalImageFormatInfo", tbl)
end
function library.s.ExternalImageFormatProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES"
if type(tbl.externalMemoryProperties) == "table" then
tbl.externalMemoryProperties = library.s.ExternalMemoryProperties(tbl.externalMemoryProperties, true)
end
return table_only and tbl or ffi.new("struct VkExternalImageFormatProperties", tbl)
end
function library.s.PhysicalDeviceExternalBufferInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO"
if type(tbl.flags) == "table" then
tbl.flags = library.e.buffer_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.buffer_create[tbl.flags]
end
if type(tbl.usage) == "table" then
tbl.usage = library.e.buffer_usage.make_enums(tbl.usage)
elseif type(tbl.usage) == "string" then
tbl.usage = library.e.buffer_usage[tbl.usage]
end
if type(tbl.handleType) == "table" then
tbl.handleType = library.e.external_memory_handle_type.make_enums(tbl.handleType)
elseif type(tbl.handleType) == "string" then
tbl.handleType = library.e.external_memory_handle_type[tbl.handleType]
end
return table_only and tbl or ffi.new("struct VkPhysicalDeviceExternalBufferInfo", tbl)
end
function library.s.ExternalBufferProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES"
if type(tbl.externalMemoryProperties) == "table" then
tbl.externalMemoryProperties = library.s.ExternalMemoryProperties(tbl.externalMemoryProperties, true)
end
return table_only and tbl or ffi.new("struct VkExternalBufferProperties", tbl)
end
function library.s.ExternalMemoryBufferCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO"
if type(tbl.handleTypes) == "table" then
tbl.handleTypes = library.e.external_memory_handle_type.make_enums(tbl.handleTypes)
elseif type(tbl.handleTypes) == "string" then
tbl.handleTypes = library.e.external_memory_handle_type[tbl.handleTypes]
end
return table_only and tbl or ffi.new("struct VkExternalMemoryBufferCreateInfo", tbl)
end
function library.s.ExternalMemoryImageCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO"
if type(tbl.handleTypes) == "table" then
tbl.handleTypes = library.e.external_memory_handle_type.make_enums(tbl.handleTypes)
elseif type(tbl.handleTypes) == "string" then
tbl.handleTypes = library.e.external_memory_handle_type[tbl.handleTypes]
end
return table_only and tbl or ffi.new("struct VkExternalMemoryImageCreateInfo", tbl)
end
function library.s.ExportMemoryAllocateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO"
if type(tbl.handleTypes) == "table" then
tbl.handleTypes = library.e.external_memory_handle_type.make_enums(tbl.handleTypes)
elseif type(tbl.handleTypes) == "string" then
tbl.handleTypes = library.e.external_memory_handle_type[tbl.handleTypes]
end
return table_only and tbl or ffi.new("struct VkExportMemoryAllocateInfo", tbl)
end
function library.s.PhysicalDeviceExternalFenceInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO"
if type(tbl.handleType) == "table" then
tbl.handleType = library.e.external_fence_handle_type.make_enums(tbl.handleType)
elseif type(tbl.handleType) == "string" then
tbl.handleType = library.e.external_fence_handle_type[tbl.handleType]
end
return table_only and tbl or ffi.new("struct VkPhysicalDeviceExternalFenceInfo", tbl)
end
function library.s.ExternalFenceProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES"
if type(tbl.exportFromImportedHandleTypes) == "table" then
tbl.exportFromImportedHandleTypes = library.e.external_fence_handle_type.make_enums(tbl.exportFromImportedHandleTypes)
elseif type(tbl.exportFromImportedHandleTypes) == "string" then
tbl.exportFromImportedHandleTypes = library.e.external_fence_handle_type[tbl.exportFromImportedHandleTypes]
end
if type(tbl.compatibleHandleTypes) == "table" then
tbl.compatibleHandleTypes = library.e.external_fence_handle_type.make_enums(tbl.compatibleHandleTypes)
elseif type(tbl.compatibleHandleTypes) == "string" then
tbl.compatibleHandleTypes = library.e.external_fence_handle_type[tbl.compatibleHandleTypes]
end
if type(tbl.externalFenceFeatures) == "table" then
tbl.externalFenceFeatures = library.e.external_fence_feature.make_enums(tbl.externalFenceFeatures)
elseif type(tbl.externalFenceFeatures) == "string" then
tbl.externalFenceFeatures = library.e.external_fence_feature[tbl.externalFenceFeatures]
end
return table_only and tbl or ffi.new("struct VkExternalFenceProperties", tbl)
end
function library.s.ExportFenceCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO"
if type(tbl.handleTypes) == "table" then
tbl.handleTypes = library.e.external_fence_handle_type.make_enums(tbl.handleTypes)
elseif type(tbl.handleTypes) == "string" then
tbl.handleTypes = library.e.external_fence_handle_type[tbl.handleTypes]
end
return table_only and tbl or ffi.new("struct VkExportFenceCreateInfo", tbl)
end
function library.s.ExportSemaphoreCreateInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO"
if type(tbl.handleTypes) == "table" then
tbl.handleTypes = library.e.external_semaphore_handle_type.make_enums(tbl.handleTypes)
elseif type(tbl.handleTypes) == "string" then
tbl.handleTypes = library.e.external_semaphore_handle_type[tbl.handleTypes]
end
return table_only and tbl or ffi.new("struct VkExportSemaphoreCreateInfo", tbl)
end
function library.s.PhysicalDeviceExternalSemaphoreInfo(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO"
if type(tbl.handleType) == "table" then
tbl.handleType = library.e.external_semaphore_handle_type.make_enums(tbl.handleType)
elseif type(tbl.handleType) == "string" then
tbl.handleType = library.e.external_semaphore_handle_type[tbl.handleType]
end
return table_only and tbl or ffi.new("struct VkPhysicalDeviceExternalSemaphoreInfo", tbl)
end
function library.s.ExternalSemaphoreProperties(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES"
if type(tbl.exportFromImportedHandleTypes) == "table" then
tbl.exportFromImportedHandleTypes = library.e.external_semaphore_handle_type.make_enums(tbl.exportFromImportedHandleTypes)
elseif type(tbl.exportFromImportedHandleTypes) == "string" then
tbl.exportFromImportedHandleTypes = library.e.external_semaphore_handle_type[tbl.exportFromImportedHandleTypes]
end
if type(tbl.compatibleHandleTypes) == "table" then
tbl.compatibleHandleTypes = library.e.external_semaphore_handle_type.make_enums(tbl.compatibleHandleTypes)
elseif type(tbl.compatibleHandleTypes) == "string" then
tbl.compatibleHandleTypes = library.e.external_semaphore_handle_type[tbl.compatibleHandleTypes]
end
if type(tbl.externalSemaphoreFeatures) == "table" then
tbl.externalSemaphoreFeatures = library.e.external_semaphore_feature.make_enums(tbl.externalSemaphoreFeatures)
elseif type(tbl.externalSemaphoreFeatures) == "string" then
tbl.externalSemaphoreFeatures = library.e.external_semaphore_feature[tbl.externalSemaphoreFeatures]
end
return table_only and tbl or ffi.new("struct VkExternalSemaphoreProperties", tbl)
end
function library.s.DescriptorSetLayoutSupport(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT"
return table_only and tbl or ffi.new("struct VkDescriptorSetLayoutSupport", tbl)
end
function library.s.PhysicalDeviceShaderDrawParameterFeatures(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES"
return table_only and tbl or ffi.new("struct VkPhysicalDeviceShaderDrawParameterFeatures", tbl)
end
function library.s.SwapchainCreateInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"
if type(tbl.flags) == "table" then
tbl.flags = library.e.swapchain_create.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.swapchain_create[tbl.flags]
end
if type(tbl.imageFormat) == "string" then
tbl.imageFormat = library.e.format[tbl.imageFormat]
end
if type(tbl.imageColorSpace) == "string" then
tbl.imageColorSpace = library.e.colorspace[tbl.imageColorSpace]
end
if type(tbl.imageExtent) == "table" then
tbl.imageExtent = library.s.Extent2D(tbl.imageExtent, true)
end
if type(tbl.imageUsage) == "table" then
tbl.imageUsage = library.e.image_usage.make_enums(tbl.imageUsage)
elseif type(tbl.imageUsage) == "string" then
tbl.imageUsage = library.e.image_usage[tbl.imageUsage]
end
if type(tbl.imageSharingMode) == "string" then
tbl.imageSharingMode = library.e.sharing_mode[tbl.imageSharingMode]
end
if type(tbl.preTransform) == "table" then
tbl.preTransform = library.e.surface_transform.make_enums(tbl.preTransform)
elseif type(tbl.preTransform) == "string" then
tbl.preTransform = library.e.surface_transform[tbl.preTransform]
end
if type(tbl.compositeAlpha) == "table" then
tbl.compositeAlpha = library.e.composite_alpha.make_enums(tbl.compositeAlpha)
elseif type(tbl.compositeAlpha) == "string" then
tbl.compositeAlpha = library.e.composite_alpha[tbl.compositeAlpha]
end
if type(tbl.presentMode) == "string" then
tbl.presentMode = library.e.present_mode[tbl.presentMode]
end
return table_only and tbl or ffi.new("struct VkSwapchainCreateInfoKHR", tbl)
end
function library.s.PresentInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR"
if type(tbl.pWaitSemaphores) == "table" then
if not tbl.waitSemaphoreCount then
tbl.waitSemaphoreCount = #tbl.pWaitSemaphores
end
tbl.pWaitSemaphores = library.s.SemaphoreArray(tbl.pWaitSemaphores, false)
end
if type(tbl.pSwapchains) == "table" then
if not tbl.swapchainCount then
tbl.swapchainCount = #tbl.pSwapchains
end
tbl.pSwapchains = library.s.SwapchainKHRArray(tbl.pSwapchains, false)
end
if type(tbl.pResults) == "string" then
tbl.pResults = library.e.result[tbl.pResults]
end
return table_only and tbl or ffi.new("struct VkPresentInfoKHR", tbl)
end
function library.s.DeviceGroupPresentCapabilitiesKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR"
if type(tbl.modes) == "table" then
tbl.modes = library.e.device_group_present_mode.make_enums(tbl.modes)
elseif type(tbl.modes) == "string" then
tbl.modes = library.e.device_group_present_mode[tbl.modes]
end
return table_only and tbl or ffi.new("struct VkDeviceGroupPresentCapabilitiesKHR", tbl)
end
function library.s.ImageSwapchainCreateInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR"
return table_only and tbl or ffi.new("struct VkImageSwapchainCreateInfoKHR", tbl)
end
function library.s.BindImageMemorySwapchainInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR"
return table_only and tbl or ffi.new("struct VkBindImageMemorySwapchainInfoKHR", tbl)
end
function library.s.AcquireNextImageInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR"
return table_only and tbl or ffi.new("struct VkAcquireNextImageInfoKHR", tbl)
end
function library.s.DeviceGroupPresentInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR"
if type(tbl.mode) == "table" then
tbl.mode = library.e.device_group_present_mode.make_enums(tbl.mode)
elseif type(tbl.mode) == "string" then
tbl.mode = library.e.device_group_present_mode[tbl.mode]
end
return table_only and tbl or ffi.new("struct VkDeviceGroupPresentInfoKHR", tbl)
end
function library.s.DeviceGroupSwapchainCreateInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR"
if type(tbl.modes) == "table" then
tbl.modes = library.e.device_group_present_mode.make_enums(tbl.modes)
elseif type(tbl.modes) == "string" then
tbl.modes = library.e.device_group_present_mode[tbl.modes]
end
return table_only and tbl or ffi.new("struct VkDeviceGroupSwapchainCreateInfoKHR", tbl)
end
function library.s.DisplayModeCreateInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR"
if type(tbl.parameters) == "table" then
tbl.parameters = library.s.DisplayModeParametersKHR(tbl.parameters, true)
end
return table_only and tbl or ffi.new("struct VkDisplayModeCreateInfoKHR", tbl)
end
function library.s.DisplaySurfaceCreateInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR"
if type(tbl.transform) == "table" then
tbl.transform = library.e.surface_transform.make_enums(tbl.transform)
elseif type(tbl.transform) == "string" then
tbl.transform = library.e.surface_transform[tbl.transform]
end
if type(tbl.alphaMode) == "table" then
tbl.alphaMode = library.e.display_plane_alpha.make_enums(tbl.alphaMode)
elseif type(tbl.alphaMode) == "string" then
tbl.alphaMode = library.e.display_plane_alpha[tbl.alphaMode]
end
if type(tbl.imageExtent) == "table" then
tbl.imageExtent = library.s.Extent2D(tbl.imageExtent, true)
end
return table_only and tbl or ffi.new("struct VkDisplaySurfaceCreateInfoKHR", tbl)
end
function library.s.DisplayPresentInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR"
if type(tbl.srcRect) == "table" then
tbl.srcRect = library.s.Rect2D(tbl.srcRect, true)
end
if type(tbl.dstRect) == "table" then
tbl.dstRect = library.s.Rect2D(tbl.dstRect, true)
end
return table_only and tbl or ffi.new("struct VkDisplayPresentInfoKHR", tbl)
end
function library.s.DebugReportCallbackCreateInfoEXT(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"
if type(tbl.flags) == "table" then
tbl.flags = library.e.debug_report.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.debug_report[tbl.flags]
end
return table_only and tbl or ffi.new("struct VkDebugReportCallbackCreateInfoEXT", tbl)
end
function library.s.PipelineRasterizationStateRasterizationOrderAMD(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"
if type(tbl.rasterizationOrder) == "string" then
tbl.rasterizationOrder = library.e.rasterization_order[tbl.rasterizationOrder]
end
return table_only and tbl or ffi.new("struct VkPipelineRasterizationStateRasterizationOrderAMD", tbl)
end
function library.s.DebugMarkerObjectNameInfoEXT(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT"
if type(tbl.objectType) == "string" then
tbl.objectType = library.e.debug_report_object_type[tbl.objectType]
end
return table_only and tbl or ffi.new("struct VkDebugMarkerObjectNameInfoEXT", tbl)
end
function library.s.DebugMarkerObjectTagInfoEXT(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT"
if type(tbl.objectType) == "string" then
tbl.objectType = library.e.debug_report_object_type[tbl.objectType]
end
return table_only and tbl or ffi.new("struct VkDebugMarkerObjectTagInfoEXT", tbl)
end
function library.s.DebugMarkerMarkerInfoEXT(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT"
return table_only and tbl or ffi.new("struct VkDebugMarkerMarkerInfoEXT", tbl)
end
function library.s.DedicatedAllocationImageCreateInfoNV(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV"
return table_only and tbl or ffi.new("struct VkDedicatedAllocationImageCreateInfoNV", tbl)
end
function library.s.DedicatedAllocationBufferCreateInfoNV(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV"
return table_only and tbl or ffi.new("struct VkDedicatedAllocationBufferCreateInfoNV", tbl)
end
function library.s.DedicatedAllocationMemoryAllocateInfoNV(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV"
return table_only and tbl or ffi.new("struct VkDedicatedAllocationMemoryAllocateInfoNV", tbl)
end
function library.s.ExternalMemoryImageCreateInfoNV(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV"
if type(tbl.handleTypes) == "table" then
tbl.handleTypes = library.e.external_memory_handle_type.make_enums(tbl.handleTypes)
elseif type(tbl.handleTypes) == "string" then
tbl.handleTypes = library.e.external_memory_handle_type[tbl.handleTypes]
end
return table_only and tbl or ffi.new("struct VkExternalMemoryImageCreateInfoNV", tbl)
end
function library.s.ExportMemoryAllocateInfoNV(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV"
if type(tbl.handleTypes) == "table" then
tbl.handleTypes = library.e.external_memory_handle_type.make_enums(tbl.handleTypes)
elseif type(tbl.handleTypes) == "string" then
tbl.handleTypes = library.e.external_memory_handle_type[tbl.handleTypes]
end
return table_only and tbl or ffi.new("struct VkExportMemoryAllocateInfoNV", tbl)
end
function library.s.ValidationFlagsEXT(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"
if type(tbl.pDisabledValidationChecks) == "string" then
tbl.pDisabledValidationChecks = library.e.validation_check[tbl.pDisabledValidationChecks]
end
return table_only and tbl or ffi.new("struct VkValidationFlagsEXT", tbl)
end
function library.s.ImportMemoryFdInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR"
if type(tbl.handleType) == "table" then
tbl.handleType = library.e.external_memory_handle_type.make_enums(tbl.handleType)
elseif type(tbl.handleType) == "string" then
tbl.handleType = library.e.external_memory_handle_type[tbl.handleType]
end
return table_only and tbl or ffi.new("struct VkImportMemoryFdInfoKHR", tbl)
end
function library.s.MemoryFdPropertiesKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR"
return table_only and tbl or ffi.new("struct VkMemoryFdPropertiesKHR", tbl)
end
function library.s.MemoryGetFdInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR"
if type(tbl.handleType) == "table" then
tbl.handleType = library.e.external_memory_handle_type.make_enums(tbl.handleType)
elseif type(tbl.handleType) == "string" then
tbl.handleType = library.e.external_memory_handle_type[tbl.handleType]
end
return table_only and tbl or ffi.new("struct VkMemoryGetFdInfoKHR", tbl)
end
function library.s.ImportSemaphoreFdInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR"
if type(tbl.flags) == "table" then
tbl.flags = library.e.semaphore_import.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.semaphore_import[tbl.flags]
end
if type(tbl.handleType) == "table" then
tbl.handleType = library.e.external_semaphore_handle_type.make_enums(tbl.handleType)
elseif type(tbl.handleType) == "string" then
tbl.handleType = library.e.external_semaphore_handle_type[tbl.handleType]
end
return table_only and tbl or ffi.new("struct VkImportSemaphoreFdInfoKHR", tbl)
end
function library.s.SemaphoreGetFdInfoKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR"
if type(tbl.handleType) == "table" then
tbl.handleType = library.e.external_semaphore_handle_type.make_enums(tbl.handleType)
elseif type(tbl.handleType) == "string" then
tbl.handleType = library.e.external_semaphore_handle_type[tbl.handleType]
end
return table_only and tbl or ffi.new("struct VkSemaphoreGetFdInfoKHR", tbl)
end
function library.s.PhysicalDevicePushDescriptorPropertiesKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR"
return table_only and tbl or ffi.new("struct VkPhysicalDevicePushDescriptorPropertiesKHR", tbl)
end
function library.s.PresentRegionsKHR(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR"
if type(tbl.pRegions) == "table" then
if not tbl.swapchainCount then
tbl.swapchainCount = #tbl.pRegions
end
tbl.pRegions = library.s.PresentRegionKHRArray(tbl.pRegions, false)
end
return table_only and tbl or ffi.new("struct VkPresentRegionsKHR", tbl)
end
function library.s.ObjectTableCreateInfoNVX(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX"
if type(tbl.pObjectEntryTypes) == "string" then
tbl.pObjectEntryTypes = library.e.object_entry_type[tbl.pObjectEntryTypes]
end
return table_only and tbl or ffi.new("struct VkObjectTableCreateInfoNVX", tbl)
end
function library.s.IndirectCommandsLayoutCreateInfoNVX(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX"
if type(tbl.pipelineBindPoint) == "string" then
tbl.pipelineBindPoint = library.e.pipeline_bind_point[tbl.pipelineBindPoint]
end
if type(tbl.flags) == "table" then
tbl.flags = library.e.indirect_commands_layout_usage.make_enums(tbl.flags)
elseif type(tbl.flags) == "string" then
tbl.flags = library.e.indirect_commands_layout_usage[tbl.flags]
end
if type(tbl.pTokens) == "table" then
if not tbl.tokenCount then
tbl.tokenCount = #tbl.pTokens
end
tbl.pTokens = library.s.IndirectCommandsLayoutTokenNVXArray(tbl.pTokens, false)
end
return table_only and tbl or ffi.new("struct VkIndirectCommandsLayoutCreateInfoNVX", tbl)
end
function library.s.CmdProcessCommandsInfoNVX(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX"
if type(tbl.pIndirectCommandsTokens) == "table" then
if not tbl.indirectCommandsTokenCount then
tbl.indirectCommandsTokenCount = #tbl.pIndirectCommandsTokens
end
tbl.pIndirectCommandsTokens = library.s.IndirectCommandsTokenNVXArray(tbl.pIndirectCommandsTokens, false)
end
return table_only and tbl or ffi.new("struct VkCmdProcessCommandsInfoNVX", tbl)
end
function library.s.CmdReserveSpaceForCommandsInfoNVX(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX"
return table_only and tbl or ffi.new("struct VkCmdReserveSpaceForCommandsInfoNVX", tbl)
end
function library.s.DeviceGeneratedCommandsLimitsNVX(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX"
return table_only and tbl or ffi.new("struct VkDeviceGeneratedCommandsLimitsNVX", tbl)
end
function library.s.DeviceGeneratedCommandsFeaturesNVX(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX"
return table_only and tbl or ffi.new("struct VkDeviceGeneratedCommandsFeaturesNVX", tbl)
end
function library.s.PipelineViewportWScalingStateCreateInfoNV(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV"
tbl.viewportWScalingEnable = tbl.viewportWScalingEnable and 1 or 0
if type(tbl.pViewportWScalings) == "table" then
if not tbl.viewportCount then
tbl.viewportCount = #tbl.pViewportWScalings
end
tbl.pViewportWScalings = library.s.ViewportWScalingNVArray(tbl.pViewportWScalings, false)
end
return table_only and tbl or ffi.new("struct VkPipelineViewportWScalingStateCreateInfoNV", tbl)
end
function library.s.DisplayPowerInfoEXT(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT"
if type(tbl.powerState) == "string" then
tbl.powerState = library.e.display_power_state[tbl.powerState]
end
return table_only and tbl or ffi.new("struct VkDisplayPowerInfoEXT", tbl)
end
function library.s.DeviceEventInfoEXT(tbl, table_only)
tbl.sType = "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT"
if type(tbl.deviceEvent) == "string" then
tbl.deviceEvent = library.e.device_event_type[tbl.deviceEvent]
end
return table_only and tbl or ffi.new("struct VkDeviceEventInfoEXT", tbl)
end
function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment