diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f06bd1c..c51ffa9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,7 @@ on: push: pull_request: env: - JuliaVersion: 1.5 + JuliaVersion: 1.6 VulkanSDKVersion: 1.2.148.1 JULIA_GITHUB_ACTIONS_CI: ON jobs: diff --git a/Project.toml b/Project.toml index 68ac9cf..43c1c5a 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "VulkanCore" uuid = "16167f82-ea26-5cba-b1de-ed6fd5e30a11" -version = "1.2.3" +version = "1.2.4" [deps] Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" diff --git a/gen/Manifest.toml b/gen/Manifest.toml new file mode 100644 index 0000000..d2b2886 --- /dev/null +++ b/gen/Manifest.toml @@ -0,0 +1,257 @@ +# This file is machine-generated - editing it directly is not advised + +[[ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[CEnum]] +git-tree-sha1 = "215a9aa4a1f23fbd05b92769fdd62559488d70e9" +uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" +version = "0.4.1" + +[[Clang]] +deps = ["CEnum", "Clang_jll", "Downloads", "Pkg", "TOML"] +path = "/Users/gnimuc/.julia/dev/Clang" +uuid = "40e3b903-d033-50b4-a0cc-940c62c95e31" +version = "0.14.0" + +[[Clang_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "libLLVM_jll"] +git-tree-sha1 = "a5923c06de3178dd755f4b9411ea8922a7ae6fb8" +uuid = "0ee61d77-7f21-5576-8119-9fcc46b10100" +version = "11.0.1+3" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[Downloads]] +deps = ["ArgTools", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" + +[[Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "1402e52fcda25064f51c77a9655ce8680b76acf0" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.2.7+6" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.3.0" + +[[LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" + +[[LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" + +[[LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "a2cd088a88c0d37eef7d209fd3d8712febce0d90" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.1+4" + +[[Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "b391a18ab1170a2e568f9fb8d83bc7c780cb9999" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.8.5+4" + +[[Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ec7f2e8ad5c9fa99fc773376cdbc86d9a5a23cb7" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.36.0+3" + +[[Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "8e924324b2e9275a51407a4e06deb3455b1e359f" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.16.0+7" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" + +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" + +[[Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[Preferences]] +deps = ["TOML"] +git-tree-sha1 = "ea79e4c9077208cd3bc5d29631a26bc0cff78902" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.2.1" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" + +[[Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[Vulkan_Headers_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f43bb806a557d5d71c79e1c814f5980be91f194e" +uuid = "8d446b21-f3ad-5576-a034-752265b9b6f9" +version = "1.2.177+0" + +[[Wayland_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "dc643a9b774da1c2781413fd7b6dcd2c56bb8056" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.17.0+4" + +[[XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "afd2b541e8fd425cd3b7aa55932a257035ab4a70" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.9.11+0" + +[[XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "2b3eac39df218762d2d005702d601cd44c997497" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.33+4" + +[[Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.6.9+4" + +[[Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.9+4" + +[[Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.3+4" + +[[Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.4+4" + +[[Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.10+4" + +[[Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.0+3" + +[[Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.13.0+3" + +[[Xorg_xorgproto_jll]] +deps = ["Libdl", "Pkg"] +git-tree-sha1 = "9a9eb8ce756fe0bca01b4be16da770e18d264972" +uuid = "c4d99508-4286-5418-9131-c86396af500b" +version = "2019.2.0+2" + +[[Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.4.0+3" + +[[Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" + +[[libLLVM_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8f36deef-c2a5-5394-99ed-8e07531fb29a" + +[[nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" + +[[p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" diff --git a/gen/Project.toml b/gen/Project.toml new file mode 100644 index 0000000..8810b10 --- /dev/null +++ b/gen/Project.toml @@ -0,0 +1,14 @@ +[deps] +Clang = "40e3b903-d033-50b4-a0cc-940c62c95e31" +Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +Vulkan_Headers_jll = "8d446b21-f3ad-5576-a034-752265b9b6f9" +Wayland_jll = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +Xorg_libX11_jll = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +Xorg_libXrandr_jll = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +Xorg_libXrender_jll = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +Xorg_libxcb_jll = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +Xorg_xorgproto_jll = "c4d99508-4286-5418-9131-c86396af500b" + +[compat] +Clang = "0.14.0" +Vulkan_Headers_jll = "1.2.177" diff --git a/gen/generator.jl b/gen/generator.jl index 621357f..42d0a58 100755 --- a/gen/generator.jl +++ b/gen/generator.jl @@ -1,60 +1,95 @@ -using Clang - +using Clang.Generators +using Clang.Generators.JLLEnvs import Vulkan_Headers_jll +using Wayland_jll +using Xorg_libxcb_jll +using Xorg_xorgproto_jll +using Xorg_libX11_jll +using Xorg_libXrandr_jll +using Xorg_libXrender_jll +cd(@__DIR__) # get include directory & vulkan.h -VK_INCLUDE_ROOT = joinpath(Vulkan_Headers_jll.artifact_dir, "include") -VK_HEADERS = [joinpath(VK_INCLUDE_ROOT, "vulkan", "vulkan.h")] - -# include all extensions -VK_EXTENSIONS = [ - "VK_USE_PLATFORM_DIRECTFB_EXT", - "VK_USE_PLATFORM_ANDROID_KHR", - "VK_USE_PLATFORM_FUCHSIA", - "VK_USE_PLATFORM_IOS_MVK", - "VK_USE_PLATFORM_MACOS_MVK", - "VK_USE_PLATFORM_METAL_EXT", - "VK_USE_PLATFORM_VI_NN", - "VK_USE_PLATFORM_WAYLAND_KHR", - "VK_USE_PLATFORM_WIN32_KHR", - "VK_USE_PLATFORM_XCB_KHR", - "VK_USE_PLATFORM_XLIB_KHR", - "VK_USE_PLATFORM_XLIB_XRANDR_EXT", - "VK_USE_PLATFORM_GGP", - "VK_USE_PLATFORM_SCREEN_QNX", - "VK_ENABLE_BETA_EXTENSIONS", - ] - -common_file = joinpath(@__DIR__, "vk_common.jl") -api_file = joinpath(@__DIR__, "vk_api.jl") - -wc = init(; headers=VK_HEADERS, -output_file=api_file, - common_file=common_file, - clang_includes=vcat(VK_INCLUDE_ROOT, CLANG_INCLUDE), - clang_args="-D" .* VK_EXTENSIONS, - header_wrapped=(root, current) -> startswith(current, VK_INCLUDE_ROOT), - header_library=x -> "libvulkan", - clang_diagnostics=true, - ) - -# it should complain that some header files are not present (zircon/types.h, wayland-client.h...) but it should be OK since nothing from those files is actually wrapped -run(wc) - -api_str = join(readlines(api_file), "\n") - -# add an additional method which uses a function pointer for each API function -wrapped_funcs = String[] -for func ∈ eachmatch(r"function (.*)\((.*)\)\n (ccall.*)\nend", api_str) - name, args, body = func.captures - wrapped_func = """ - function $name($args, fun_ptr) - $(replace(body, "(:$name, libvulkan)" => "fun_ptr")) - end - """ - push!(wrapped_funcs, wrapped_func) -end -open(api_file, "a+") do io - write(io, "\n" * join(wrapped_funcs, "\n")) +const VK_INCLUDE = joinpath(Vulkan_Headers_jll.artifact_dir, "include", "vulkan") +const VK_HEADERS = [joinpath(VK_INCLUDE, "vulkan.h")] + +# config extensions for different platforms +# X-ref: https://github.com/SaschaWillems/Vulkan/blob/master/CMakeLists.txt +const VK_LINUX_EXTENSION_COMMON = [ + # "-DVK_USE_PLATFORM_DIRECTFB_EXT", # no JLL package + "-DVK_USE_PLATFORM_WAYLAND_KHR", + "-DVK_USE_PLATFORM_XCB_KHR", + "-DVK_USE_PLATFORM_XLIB_KHR", + "-DVK_USE_PLATFORM_XLIB_XRANDR_EXT", +] +const VK_MACOS_EXTENSION_COMMON = ["-DVK_USE_PLATFORM_MACOS_MVK", "-DVK_USE_PLATFORM_METAL_EXT"] +const VK_WIN_EXTENSION_COMMON = ["-DVK_USE_PLATFORM_WIN32_KHR"] +const VK_EXTENSIONS_MAP = Dict( + # "aarch64-apple-darwin20" => vcat(VK_MACOS_EXTENSION_COMMON, "-DVK_USE_PLATFORM_DIRECTFB_EXT"), + # "x86_64-apple-darwin14" => vcat(VK_MACOS_EXTENSION_COMMON, "-DVK_USE_PLATFORM_DIRECTFB_EXT"), + "aarch64-apple-darwin20" => VK_MACOS_EXTENSION_COMMON, + "x86_64-apple-darwin14" => VK_MACOS_EXTENSION_COMMON, + "i686-w64-mingw32" => VK_WIN_EXTENSION_COMMON, + "x86_64-w64-mingw32" => VK_WIN_EXTENSION_COMMON, + # "aarch64-linux-gnu" => vcat(VK_LINUX_EXTENSION_COMMON, "-DVK_USE_PLATFORM_FUCHSIA"), + # "aarch64-linux-musl" => vcat(VK_LINUX_EXTENSION_COMMON, "-DVK_USE_PLATFORM_FUCHSIA"), + "aarch64-linux-gnu" => VK_LINUX_EXTENSION_COMMON, + "aarch64-linux-musl" => VK_LINUX_EXTENSION_COMMON, + "armv7l-linux-gnueabihf" => VK_LINUX_EXTENSION_COMMON, + "armv7l-linux-musleabihf" => VK_LINUX_EXTENSION_COMMON, + "x86_64-linux-gnu" => VK_LINUX_EXTENSION_COMMON, + "x86_64-linux-musl" => VK_LINUX_EXTENSION_COMMON, + "i686-linux-gnu" => VK_LINUX_EXTENSION_COMMON, + "i686-linux-musl" => VK_LINUX_EXTENSION_COMMON, + "powerpc64le-linux-gnu" => VK_LINUX_EXTENSION_COMMON, + "x86_64-unknown-freebsd11.1" => ["-DVK_USE_PLATFORM_XCB_KHR", "-DVK_USE_PLATFORM_XLIB_KHR", "-DVK_USE_PLATFORM_XLIB_XRANDR_EXT"], +) + +for target in JLLEnvs.JLL_ENV_TRIPLES + @info "processing $target" + + # programmatically add options + options = Dict{String,Any}( + "general" => Dict{String,Any}(), + "codegen" => Dict{String,Any}(), + ) + general, codegen = options["general"], options["codegen"] + general["library_name"] = "libvulkan" + general["output_file_path"] = joinpath(@__DIR__, "..", "lib", "$target.jl") + general["use_deterministic_symbol"] = true + general["print_using_CEnum"] = false + general["printer_blacklist"] = [ + "VKAPI_PTR", + "VKAPI_CALL", + ] + codegen["opaque_as_mutable_struct"] = false + + # add compiler flags + args = get_default_args(target) + push!(args, "-I$VK_INCLUDE") + + wayland_inc = JLLEnvs.get_pkg_include_dir(Wayland_jll, target) + !isempty(wayland_inc) && push!(args, "-isystem$wayland_inc") + + xcb_inc = JLLEnvs.get_pkg_include_dir(Xorg_libxcb_jll, target) + !isempty(xcb_inc) && push!(args, "-isystem$xcb_inc") + + xlibx_inc = JLLEnvs.get_pkg_include_dir(Xorg_xorgproto_jll, target) + !isempty(xlibx_inc) && push!(args, "-isystem$xlibx_inc") + + xlib_inc = JLLEnvs.get_pkg_include_dir(Xorg_libX11_jll, target) + !isempty(xlib_inc) && push!(args, "-isystem$xlib_inc") + + xlibXrandr_inc = JLLEnvs.get_pkg_include_dir(Xorg_libXrandr_jll, target) + !isempty(xlibXrandr_inc) && push!(args, "-isystem$xlibXrandr_inc") + + xlibXrender_inc = JLLEnvs.get_pkg_include_dir(Xorg_libXrender_jll, target) + !isempty(xlibXrender_inc) && push!(args, "-isystem$xlibXrender_inc") + + append!(args, VK_EXTENSIONS_MAP[target]) + + ctx = create_context(VK_HEADERS, args, options) + + build!(ctx) end diff --git a/gen/generator_spirv.jl b/gen/generator_spirv.jl deleted file mode 100644 index 1503b30..0000000 --- a/gen/generator_spirv.jl +++ /dev/null @@ -1,43 +0,0 @@ -using Clang - -# get spirv source -spirv = joinpath(@__DIR__, "spirv.h") -download("https://www.khronos.org/registry/spir-v/api/1.0/spirv.h", spirv) - -# create a work context -ctx = DefaultContext() - -# parse headers -parse_headers!(ctx, [spirv]) - -# settings -ctx.libname = "libspirv" -ctx.options["is_function_strictly_typed"] = false -ctx.options["is_struct_mutable"] = false - -# write output -for trans_unit in ctx.trans_units - root_cursor = getcursor(trans_unit) - push!(ctx.cursor_stack, root_cursor) - header = spelling(root_cursor) - @info "wrapping header: $header ..." - # loop over all of the child cursors and wrap them, if appropriate. - ctx.children = children(root_cursor) - for (i, child) in enumerate(ctx.children) - child_name = name(child) - child_header = filename(child) - ctx.children_index = i - # choose which cursor to wrap - startswith(child_name, "__") && continue # skip compiler definitions - child_name in keys(ctx.common_buffer) && continue # already wrapped - child_header != header && continue # skip if cursor filename is not in the headers to be wrapped - - wrap!(ctx, child) - end -end -# write "common" definitions: types, typealiases, etc. -common_file = joinpath(@__DIR__, "spirv_common.jl") -open(common_file, "w") do f - println(f, "# Automatically generated using Clang.jl\n") - print_buffer(f, dump_to_buffer(ctx.common_buffer)) -end diff --git a/gen/spirv_common.jl b/gen/spirv_common.jl deleted file mode 100644 index e432a81..0000000 --- a/gen/spirv_common.jl +++ /dev/null @@ -1,975 +0,0 @@ -# Automatically generated using Clang.jl - - -const SPV_VERSION = 0x00010000 -const SPV_REVISION = 8 -const SpvId = UInt32 - -@cenum SpvSourceLanguage_::UInt32 begin - SpvSourceLanguageUnknown = 0 - SpvSourceLanguageESSL = 1 - SpvSourceLanguageGLSL = 2 - SpvSourceLanguageOpenCL_C = 3 - SpvSourceLanguageOpenCL_CPP = 4 - SpvSourceLanguageMax = 2147483647 -end - - -const SpvSourceLanguage = SpvSourceLanguage_ - -@cenum SpvExecutionModel_::UInt32 begin - SpvExecutionModelVertex = 0 - SpvExecutionModelTessellationControl = 1 - SpvExecutionModelTessellationEvaluation = 2 - SpvExecutionModelGeometry = 3 - SpvExecutionModelFragment = 4 - SpvExecutionModelGLCompute = 5 - SpvExecutionModelKernel = 6 - SpvExecutionModelMax = 2147483647 -end - - -const SpvExecutionModel = SpvExecutionModel_ - -@cenum SpvAddressingModel_::UInt32 begin - SpvAddressingModelLogical = 0 - SpvAddressingModelPhysical32 = 1 - SpvAddressingModelPhysical64 = 2 - SpvAddressingModelMax = 2147483647 -end - - -const SpvAddressingModel = SpvAddressingModel_ - -@cenum SpvMemoryModel_::UInt32 begin - SpvMemoryModelSimple = 0 - SpvMemoryModelGLSL450 = 1 - SpvMemoryModelOpenCL = 2 - SpvMemoryModelMax = 2147483647 -end - - -const SpvMemoryModel = SpvMemoryModel_ - -@cenum SpvExecutionMode_::UInt32 begin - SpvExecutionModeInvocations = 0 - SpvExecutionModeSpacingEqual = 1 - SpvExecutionModeSpacingFractionalEven = 2 - SpvExecutionModeSpacingFractionalOdd = 3 - SpvExecutionModeVertexOrderCw = 4 - SpvExecutionModeVertexOrderCcw = 5 - SpvExecutionModePixelCenterInteger = 6 - SpvExecutionModeOriginUpperLeft = 7 - SpvExecutionModeOriginLowerLeft = 8 - SpvExecutionModeEarlyFragmentTests = 9 - SpvExecutionModePointMode = 10 - SpvExecutionModeXfb = 11 - SpvExecutionModeDepthReplacing = 12 - SpvExecutionModeDepthGreater = 14 - SpvExecutionModeDepthLess = 15 - SpvExecutionModeDepthUnchanged = 16 - SpvExecutionModeLocalSize = 17 - SpvExecutionModeLocalSizeHint = 18 - SpvExecutionModeInputPoints = 19 - SpvExecutionModeInputLines = 20 - SpvExecutionModeInputLinesAdjacency = 21 - SpvExecutionModeTriangles = 22 - SpvExecutionModeInputTrianglesAdjacency = 23 - SpvExecutionModeQuads = 24 - SpvExecutionModeIsolines = 25 - SpvExecutionModeOutputVertices = 26 - SpvExecutionModeOutputPoints = 27 - SpvExecutionModeOutputLineStrip = 28 - SpvExecutionModeOutputTriangleStrip = 29 - SpvExecutionModeVecTypeHint = 30 - SpvExecutionModeContractionOff = 31 - SpvExecutionModeMax = 2147483647 -end - - -const SpvExecutionMode = SpvExecutionMode_ - -@cenum SpvStorageClass_::UInt32 begin - SpvStorageClassUniformConstant = 0 - SpvStorageClassInput = 1 - SpvStorageClassUniform = 2 - SpvStorageClassOutput = 3 - SpvStorageClassWorkgroup = 4 - SpvStorageClassCrossWorkgroup = 5 - SpvStorageClassPrivate = 6 - SpvStorageClassFunction = 7 - SpvStorageClassGeneric = 8 - SpvStorageClassPushConstant = 9 - SpvStorageClassAtomicCounter = 10 - SpvStorageClassImage = 11 - SpvStorageClassMax = 2147483647 -end - - -const SpvStorageClass = SpvStorageClass_ - -@cenum SpvDim_::UInt32 begin - SpvDim1D = 0 - SpvDim2D = 1 - SpvDim3D = 2 - SpvDimCube = 3 - SpvDimRect = 4 - SpvDimBuffer = 5 - SpvDimSubpassData = 6 - SpvDimMax = 2147483647 -end - - -const SpvDim = SpvDim_ - -@cenum SpvSamplerAddressingMode_::UInt32 begin - SpvSamplerAddressingModeNone = 0 - SpvSamplerAddressingModeClampToEdge = 1 - SpvSamplerAddressingModeClamp = 2 - SpvSamplerAddressingModeRepeat = 3 - SpvSamplerAddressingModeRepeatMirrored = 4 - SpvSamplerAddressingModeMax = 2147483647 -end - - -const SpvSamplerAddressingMode = SpvSamplerAddressingMode_ - -@cenum SpvSamplerFilterMode_::UInt32 begin - SpvSamplerFilterModeNearest = 0 - SpvSamplerFilterModeLinear = 1 - SpvSamplerFilterModeMax = 2147483647 -end - - -const SpvSamplerFilterMode = SpvSamplerFilterMode_ - -@cenum SpvImageFormat_::UInt32 begin - SpvImageFormatUnknown = 0 - SpvImageFormatRgba32f = 1 - SpvImageFormatRgba16f = 2 - SpvImageFormatR32f = 3 - SpvImageFormatRgba8 = 4 - SpvImageFormatRgba8Snorm = 5 - SpvImageFormatRg32f = 6 - SpvImageFormatRg16f = 7 - SpvImageFormatR11fG11fB10f = 8 - SpvImageFormatR16f = 9 - SpvImageFormatRgba16 = 10 - SpvImageFormatRgb10A2 = 11 - SpvImageFormatRg16 = 12 - SpvImageFormatRg8 = 13 - SpvImageFormatR16 = 14 - SpvImageFormatR8 = 15 - SpvImageFormatRgba16Snorm = 16 - SpvImageFormatRg16Snorm = 17 - SpvImageFormatRg8Snorm = 18 - SpvImageFormatR16Snorm = 19 - SpvImageFormatR8Snorm = 20 - SpvImageFormatRgba32i = 21 - SpvImageFormatRgba16i = 22 - SpvImageFormatRgba8i = 23 - SpvImageFormatR32i = 24 - SpvImageFormatRg32i = 25 - SpvImageFormatRg16i = 26 - SpvImageFormatRg8i = 27 - SpvImageFormatR16i = 28 - SpvImageFormatR8i = 29 - SpvImageFormatRgba32ui = 30 - SpvImageFormatRgba16ui = 31 - SpvImageFormatRgba8ui = 32 - SpvImageFormatR32ui = 33 - SpvImageFormatRgb10a2ui = 34 - SpvImageFormatRg32ui = 35 - SpvImageFormatRg16ui = 36 - SpvImageFormatRg8ui = 37 - SpvImageFormatR16ui = 38 - SpvImageFormatR8ui = 39 - SpvImageFormatMax = 2147483647 -end - - -const SpvImageFormat = SpvImageFormat_ - -@cenum SpvImageChannelOrder_::UInt32 begin - SpvImageChannelOrderR = 0 - SpvImageChannelOrderA = 1 - SpvImageChannelOrderRG = 2 - SpvImageChannelOrderRA = 3 - SpvImageChannelOrderRGB = 4 - SpvImageChannelOrderRGBA = 5 - SpvImageChannelOrderBGRA = 6 - SpvImageChannelOrderARGB = 7 - SpvImageChannelOrderIntensity = 8 - SpvImageChannelOrderLuminance = 9 - SpvImageChannelOrderRx = 10 - SpvImageChannelOrderRGx = 11 - SpvImageChannelOrderRGBx = 12 - SpvImageChannelOrderDepth = 13 - SpvImageChannelOrderDepthStencil = 14 - SpvImageChannelOrdersRGB = 15 - SpvImageChannelOrdersRGBx = 16 - SpvImageChannelOrdersRGBA = 17 - SpvImageChannelOrdersBGRA = 18 - SpvImageChannelOrderABGR = 19 - SpvImageChannelOrderMax = 2147483647 -end - - -const SpvImageChannelOrder = SpvImageChannelOrder_ - -@cenum SpvImageChannelDataType_::UInt32 begin - SpvImageChannelDataTypeSnormInt8 = 0 - SpvImageChannelDataTypeSnormInt16 = 1 - SpvImageChannelDataTypeUnormInt8 = 2 - SpvImageChannelDataTypeUnormInt16 = 3 - SpvImageChannelDataTypeUnormShort565 = 4 - SpvImageChannelDataTypeUnormShort555 = 5 - SpvImageChannelDataTypeUnormInt101010 = 6 - SpvImageChannelDataTypeSignedInt8 = 7 - SpvImageChannelDataTypeSignedInt16 = 8 - SpvImageChannelDataTypeSignedInt32 = 9 - SpvImageChannelDataTypeUnsignedInt8 = 10 - SpvImageChannelDataTypeUnsignedInt16 = 11 - SpvImageChannelDataTypeUnsignedInt32 = 12 - SpvImageChannelDataTypeHalfFloat = 13 - SpvImageChannelDataTypeFloat = 14 - SpvImageChannelDataTypeUnormInt24 = 15 - SpvImageChannelDataTypeUnormInt101010_2 = 16 - SpvImageChannelDataTypeMax = 2147483647 -end - - -const SpvImageChannelDataType = SpvImageChannelDataType_ - -@cenum SpvImageOperandsShift_::UInt32 begin - SpvImageOperandsBiasShift = 0 - SpvImageOperandsLodShift = 1 - SpvImageOperandsGradShift = 2 - SpvImageOperandsConstOffsetShift = 3 - SpvImageOperandsOffsetShift = 4 - SpvImageOperandsConstOffsetsShift = 5 - SpvImageOperandsSampleShift = 6 - SpvImageOperandsMinLodShift = 7 - SpvImageOperandsMax = 2147483647 -end - - -const SpvImageOperandsShift = SpvImageOperandsShift_ - -@cenum SpvImageOperandsMask_::UInt32 begin - SpvImageOperandsMaskNone = 0 - SpvImageOperandsBiasMask = 1 - SpvImageOperandsLodMask = 2 - SpvImageOperandsGradMask = 4 - SpvImageOperandsConstOffsetMask = 8 - SpvImageOperandsOffsetMask = 16 - SpvImageOperandsConstOffsetsMask = 32 - SpvImageOperandsSampleMask = 64 - SpvImageOperandsMinLodMask = 128 -end - - -const SpvImageOperandsMask = SpvImageOperandsMask_ - -@cenum SpvFPFastMathModeShift_::UInt32 begin - SpvFPFastMathModeNotNaNShift = 0 - SpvFPFastMathModeNotInfShift = 1 - SpvFPFastMathModeNSZShift = 2 - SpvFPFastMathModeAllowRecipShift = 3 - SpvFPFastMathModeFastShift = 4 - SpvFPFastMathModeMax = 2147483647 -end - - -const SpvFPFastMathModeShift = SpvFPFastMathModeShift_ - -@cenum SpvFPFastMathModeMask_::UInt32 begin - SpvFPFastMathModeMaskNone = 0 - SpvFPFastMathModeNotNaNMask = 1 - SpvFPFastMathModeNotInfMask = 2 - SpvFPFastMathModeNSZMask = 4 - SpvFPFastMathModeAllowRecipMask = 8 - SpvFPFastMathModeFastMask = 16 -end - - -const SpvFPFastMathModeMask = SpvFPFastMathModeMask_ - -@cenum SpvFPRoundingMode_::UInt32 begin - SpvFPRoundingModeRTE = 0 - SpvFPRoundingModeRTZ = 1 - SpvFPRoundingModeRTP = 2 - SpvFPRoundingModeRTN = 3 - SpvFPRoundingModeMax = 2147483647 -end - - -const SpvFPRoundingMode = SpvFPRoundingMode_ - -@cenum SpvLinkageType_::UInt32 begin - SpvLinkageTypeExport = 0 - SpvLinkageTypeImport = 1 - SpvLinkageTypeMax = 2147483647 -end - - -const SpvLinkageType = SpvLinkageType_ - -@cenum SpvAccessQualifier_::UInt32 begin - SpvAccessQualifierReadOnly = 0 - SpvAccessQualifierWriteOnly = 1 - SpvAccessQualifierReadWrite = 2 - SpvAccessQualifierMax = 2147483647 -end - - -const SpvAccessQualifier = SpvAccessQualifier_ - -@cenum SpvFunctionParameterAttribute_::UInt32 begin - SpvFunctionParameterAttributeZext = 0 - SpvFunctionParameterAttributeSext = 1 - SpvFunctionParameterAttributeByVal = 2 - SpvFunctionParameterAttributeSret = 3 - SpvFunctionParameterAttributeNoAlias = 4 - SpvFunctionParameterAttributeNoCapture = 5 - SpvFunctionParameterAttributeNoWrite = 6 - SpvFunctionParameterAttributeNoReadWrite = 7 - SpvFunctionParameterAttributeMax = 2147483647 -end - - -const SpvFunctionParameterAttribute = SpvFunctionParameterAttribute_ - -@cenum SpvDecoration_::UInt32 begin - SpvDecorationRelaxedPrecision = 0 - SpvDecorationSpecId = 1 - SpvDecorationBlock = 2 - SpvDecorationBufferBlock = 3 - SpvDecorationRowMajor = 4 - SpvDecorationColMajor = 5 - SpvDecorationArrayStride = 6 - SpvDecorationMatrixStride = 7 - SpvDecorationGLSLShared = 8 - SpvDecorationGLSLPacked = 9 - SpvDecorationCPacked = 10 - SpvDecorationBuiltIn = 11 - SpvDecorationNoPerspective = 13 - SpvDecorationFlat = 14 - SpvDecorationPatch = 15 - SpvDecorationCentroid = 16 - SpvDecorationSample = 17 - SpvDecorationInvariant = 18 - SpvDecorationRestrict = 19 - SpvDecorationAliased = 20 - SpvDecorationVolatile = 21 - SpvDecorationConstant = 22 - SpvDecorationCoherent = 23 - SpvDecorationNonWritable = 24 - SpvDecorationNonReadable = 25 - SpvDecorationUniform = 26 - SpvDecorationSaturatedConversion = 28 - SpvDecorationStream = 29 - SpvDecorationLocation = 30 - SpvDecorationComponent = 31 - SpvDecorationIndex = 32 - SpvDecorationBinding = 33 - SpvDecorationDescriptorSet = 34 - SpvDecorationOffset = 35 - SpvDecorationXfbBuffer = 36 - SpvDecorationXfbStride = 37 - SpvDecorationFuncParamAttr = 38 - SpvDecorationFPRoundingMode = 39 - SpvDecorationFPFastMathMode = 40 - SpvDecorationLinkageAttributes = 41 - SpvDecorationNoContraction = 42 - SpvDecorationInputAttachmentIndex = 43 - SpvDecorationAlignment = 44 - SpvDecorationMax = 2147483647 -end - - -const SpvDecoration = SpvDecoration_ - -@cenum SpvBuiltIn_::UInt32 begin - SpvBuiltInPosition = 0 - SpvBuiltInPointSize = 1 - SpvBuiltInClipDistance = 3 - SpvBuiltInCullDistance = 4 - SpvBuiltInVertexId = 5 - SpvBuiltInInstanceId = 6 - SpvBuiltInPrimitiveId = 7 - SpvBuiltInInvocationId = 8 - SpvBuiltInLayer = 9 - SpvBuiltInViewportIndex = 10 - SpvBuiltInTessLevelOuter = 11 - SpvBuiltInTessLevelInner = 12 - SpvBuiltInTessCoord = 13 - SpvBuiltInPatchVertices = 14 - SpvBuiltInFragCoord = 15 - SpvBuiltInPointCoord = 16 - SpvBuiltInFrontFacing = 17 - SpvBuiltInSampleId = 18 - SpvBuiltInSamplePosition = 19 - SpvBuiltInSampleMask = 20 - SpvBuiltInFragDepth = 22 - SpvBuiltInHelperInvocation = 23 - SpvBuiltInNumWorkgroups = 24 - SpvBuiltInWorkgroupSize = 25 - SpvBuiltInWorkgroupId = 26 - SpvBuiltInLocalInvocationId = 27 - SpvBuiltInGlobalInvocationId = 28 - SpvBuiltInLocalInvocationIndex = 29 - SpvBuiltInWorkDim = 30 - SpvBuiltInGlobalSize = 31 - SpvBuiltInEnqueuedWorkgroupSize = 32 - SpvBuiltInGlobalOffset = 33 - SpvBuiltInGlobalLinearId = 34 - SpvBuiltInSubgroupSize = 36 - SpvBuiltInSubgroupMaxSize = 37 - SpvBuiltInNumSubgroups = 38 - SpvBuiltInNumEnqueuedSubgroups = 39 - SpvBuiltInSubgroupId = 40 - SpvBuiltInSubgroupLocalInvocationId = 41 - SpvBuiltInVertexIndex = 42 - SpvBuiltInInstanceIndex = 43 - SpvBuiltInSubgroupEqMaskKHR = 4416 - SpvBuiltInSubgroupGeMaskKHR = 4417 - SpvBuiltInSubgroupGtMaskKHR = 4418 - SpvBuiltInSubgroupLeMaskKHR = 4419 - SpvBuiltInSubgroupLtMaskKHR = 4420 - SpvBuiltInBaseVertex = 4424 - SpvBuiltInBaseInstance = 4425 - SpvBuiltInDrawIndex = 4426 - SpvBuiltInMax = 2147483647 -end - - -const SpvBuiltIn = SpvBuiltIn_ - -@cenum SpvSelectionControlShift_::UInt32 begin - SpvSelectionControlFlattenShift = 0 - SpvSelectionControlDontFlattenShift = 1 - SpvSelectionControlMax = 2147483647 -end - - -const SpvSelectionControlShift = SpvSelectionControlShift_ - -@cenum SpvSelectionControlMask_::UInt32 begin - SpvSelectionControlMaskNone = 0 - SpvSelectionControlFlattenMask = 1 - SpvSelectionControlDontFlattenMask = 2 -end - - -const SpvSelectionControlMask = SpvSelectionControlMask_ - -@cenum SpvLoopControlShift_::UInt32 begin - SpvLoopControlUnrollShift = 0 - SpvLoopControlDontUnrollShift = 1 - SpvLoopControlMax = 2147483647 -end - - -const SpvLoopControlShift = SpvLoopControlShift_ - -@cenum SpvLoopControlMask_::UInt32 begin - SpvLoopControlMaskNone = 0 - SpvLoopControlUnrollMask = 1 - SpvLoopControlDontUnrollMask = 2 -end - - -const SpvLoopControlMask = SpvLoopControlMask_ - -@cenum SpvFunctionControlShift_::UInt32 begin - SpvFunctionControlInlineShift = 0 - SpvFunctionControlDontInlineShift = 1 - SpvFunctionControlPureShift = 2 - SpvFunctionControlConstShift = 3 - SpvFunctionControlMax = 2147483647 -end - - -const SpvFunctionControlShift = SpvFunctionControlShift_ - -@cenum SpvFunctionControlMask_::UInt32 begin - SpvFunctionControlMaskNone = 0 - SpvFunctionControlInlineMask = 1 - SpvFunctionControlDontInlineMask = 2 - SpvFunctionControlPureMask = 4 - SpvFunctionControlConstMask = 8 -end - - -const SpvFunctionControlMask = SpvFunctionControlMask_ - -@cenum SpvMemorySemanticsShift_::UInt32 begin - SpvMemorySemanticsAcquireShift = 1 - SpvMemorySemanticsReleaseShift = 2 - SpvMemorySemanticsAcquireReleaseShift = 3 - SpvMemorySemanticsSequentiallyConsistentShift = 4 - SpvMemorySemanticsUniformMemoryShift = 6 - SpvMemorySemanticsSubgroupMemoryShift = 7 - SpvMemorySemanticsWorkgroupMemoryShift = 8 - SpvMemorySemanticsCrossWorkgroupMemoryShift = 9 - SpvMemorySemanticsAtomicCounterMemoryShift = 10 - SpvMemorySemanticsImageMemoryShift = 11 - SpvMemorySemanticsMax = 2147483647 -end - - -const SpvMemorySemanticsShift = SpvMemorySemanticsShift_ - -@cenum SpvMemorySemanticsMask_::UInt32 begin - SpvMemorySemanticsMaskNone = 0 - SpvMemorySemanticsAcquireMask = 2 - SpvMemorySemanticsReleaseMask = 4 - SpvMemorySemanticsAcquireReleaseMask = 8 - SpvMemorySemanticsSequentiallyConsistentMask = 16 - SpvMemorySemanticsUniformMemoryMask = 64 - SpvMemorySemanticsSubgroupMemoryMask = 128 - SpvMemorySemanticsWorkgroupMemoryMask = 256 - SpvMemorySemanticsCrossWorkgroupMemoryMask = 512 - SpvMemorySemanticsAtomicCounterMemoryMask = 1024 - SpvMemorySemanticsImageMemoryMask = 2048 -end - - -const SpvMemorySemanticsMask = SpvMemorySemanticsMask_ - -@cenum SpvMemoryAccessShift_::UInt32 begin - SpvMemoryAccessVolatileShift = 0 - SpvMemoryAccessAlignedShift = 1 - SpvMemoryAccessNontemporalShift = 2 - SpvMemoryAccessMax = 2147483647 -end - - -const SpvMemoryAccessShift = SpvMemoryAccessShift_ - -@cenum SpvMemoryAccessMask_::UInt32 begin - SpvMemoryAccessMaskNone = 0 - SpvMemoryAccessVolatileMask = 1 - SpvMemoryAccessAlignedMask = 2 - SpvMemoryAccessNontemporalMask = 4 -end - - -const SpvMemoryAccessMask = SpvMemoryAccessMask_ - -@cenum SpvScope_::UInt32 begin - SpvScopeCrossDevice = 0 - SpvScopeDevice = 1 - SpvScopeWorkgroup = 2 - SpvScopeSubgroup = 3 - SpvScopeInvocation = 4 - SpvScopeMax = 2147483647 -end - - -const SpvScope = SpvScope_ - -@cenum SpvGroupOperation_::UInt32 begin - SpvGroupOperationReduce = 0 - SpvGroupOperationInclusiveScan = 1 - SpvGroupOperationExclusiveScan = 2 - SpvGroupOperationMax = 2147483647 -end - - -const SpvGroupOperation = SpvGroupOperation_ - -@cenum SpvKernelEnqueueFlags_::UInt32 begin - SpvKernelEnqueueFlagsNoWait = 0 - SpvKernelEnqueueFlagsWaitKernel = 1 - SpvKernelEnqueueFlagsWaitWorkGroup = 2 - SpvKernelEnqueueFlagsMax = 2147483647 -end - - -const SpvKernelEnqueueFlags = SpvKernelEnqueueFlags_ - -@cenum SpvKernelProfilingInfoShift_::UInt32 begin - SpvKernelProfilingInfoCmdExecTimeShift = 0 - SpvKernelProfilingInfoMax = 2147483647 -end - - -const SpvKernelProfilingInfoShift = SpvKernelProfilingInfoShift_ - -@cenum SpvKernelProfilingInfoMask_::UInt32 begin - SpvKernelProfilingInfoMaskNone = 0 - SpvKernelProfilingInfoCmdExecTimeMask = 1 -end - - -const SpvKernelProfilingInfoMask = SpvKernelProfilingInfoMask_ - -@cenum SpvCapability_::UInt32 begin - SpvCapabilityMatrix = 0 - SpvCapabilityShader = 1 - SpvCapabilityGeometry = 2 - SpvCapabilityTessellation = 3 - SpvCapabilityAddresses = 4 - SpvCapabilityLinkage = 5 - SpvCapabilityKernel = 6 - SpvCapabilityVector16 = 7 - SpvCapabilityFloat16Buffer = 8 - SpvCapabilityFloat16 = 9 - SpvCapabilityFloat64 = 10 - SpvCapabilityInt64 = 11 - SpvCapabilityInt64Atomics = 12 - SpvCapabilityImageBasic = 13 - SpvCapabilityImageReadWrite = 14 - SpvCapabilityImageMipmap = 15 - SpvCapabilityPipes = 17 - SpvCapabilityGroups = 18 - SpvCapabilityDeviceEnqueue = 19 - SpvCapabilityLiteralSampler = 20 - SpvCapabilityAtomicStorage = 21 - SpvCapabilityInt16 = 22 - SpvCapabilityTessellationPointSize = 23 - SpvCapabilityGeometryPointSize = 24 - SpvCapabilityImageGatherExtended = 25 - SpvCapabilityStorageImageMultisample = 27 - SpvCapabilityUniformBufferArrayDynamicIndexing = 28 - SpvCapabilitySampledImageArrayDynamicIndexing = 29 - SpvCapabilityStorageBufferArrayDynamicIndexing = 30 - SpvCapabilityStorageImageArrayDynamicIndexing = 31 - SpvCapabilityClipDistance = 32 - SpvCapabilityCullDistance = 33 - SpvCapabilityImageCubeArray = 34 - SpvCapabilitySampleRateShading = 35 - SpvCapabilityImageRect = 36 - SpvCapabilitySampledRect = 37 - SpvCapabilityGenericPointer = 38 - SpvCapabilityInt8 = 39 - SpvCapabilityInputAttachment = 40 - SpvCapabilitySparseResidency = 41 - SpvCapabilityMinLod = 42 - SpvCapabilitySampled1D = 43 - SpvCapabilityImage1D = 44 - SpvCapabilitySampledCubeArray = 45 - SpvCapabilitySampledBuffer = 46 - SpvCapabilityImageBuffer = 47 - SpvCapabilityImageMSArray = 48 - SpvCapabilityStorageImageExtendedFormats = 49 - SpvCapabilityImageQuery = 50 - SpvCapabilityDerivativeControl = 51 - SpvCapabilityInterpolationFunction = 52 - SpvCapabilityTransformFeedback = 53 - SpvCapabilityGeometryStreams = 54 - SpvCapabilityStorageImageReadWithoutFormat = 55 - SpvCapabilityStorageImageWriteWithoutFormat = 56 - SpvCapabilityMultiViewport = 57 - SpvCapabilitySubgroupBallotKHR = 4423 - SpvCapabilityDrawParameters = 4427 - SpvCapabilityMax = 2147483647 -end - - -const SpvCapability = SpvCapability_ - -@cenum SpvOp_::UInt32 begin - SpvOpNop = 0 - SpvOpUndef = 1 - SpvOpSourceContinued = 2 - SpvOpSource = 3 - SpvOpSourceExtension = 4 - SpvOpName = 5 - SpvOpMemberName = 6 - SpvOpString = 7 - SpvOpLine = 8 - SpvOpExtension = 10 - SpvOpExtInstImport = 11 - SpvOpExtInst = 12 - SpvOpMemoryModel = 14 - SpvOpEntryPoint = 15 - SpvOpExecutionMode = 16 - SpvOpCapability = 17 - SpvOpTypeVoid = 19 - SpvOpTypeBool = 20 - SpvOpTypeInt = 21 - SpvOpTypeFloat = 22 - SpvOpTypeVector = 23 - SpvOpTypeMatrix = 24 - SpvOpTypeImage = 25 - SpvOpTypeSampler = 26 - SpvOpTypeSampledImage = 27 - SpvOpTypeArray = 28 - SpvOpTypeRuntimeArray = 29 - SpvOpTypeStruct = 30 - SpvOpTypeOpaque = 31 - SpvOpTypePointer = 32 - SpvOpTypeFunction = 33 - SpvOpTypeEvent = 34 - SpvOpTypeDeviceEvent = 35 - SpvOpTypeReserveId = 36 - SpvOpTypeQueue = 37 - SpvOpTypePipe = 38 - SpvOpTypeForwardPointer = 39 - SpvOpConstantTrue = 41 - SpvOpConstantFalse = 42 - SpvOpConstant = 43 - SpvOpConstantComposite = 44 - SpvOpConstantSampler = 45 - SpvOpConstantNull = 46 - SpvOpSpecConstantTrue = 48 - SpvOpSpecConstantFalse = 49 - SpvOpSpecConstant = 50 - SpvOpSpecConstantComposite = 51 - SpvOpSpecConstantOp = 52 - SpvOpFunction = 54 - SpvOpFunctionParameter = 55 - SpvOpFunctionEnd = 56 - SpvOpFunctionCall = 57 - SpvOpVariable = 59 - SpvOpImageTexelPointer = 60 - SpvOpLoad = 61 - SpvOpStore = 62 - SpvOpCopyMemory = 63 - SpvOpCopyMemorySized = 64 - SpvOpAccessChain = 65 - SpvOpInBoundsAccessChain = 66 - SpvOpPtrAccessChain = 67 - SpvOpArrayLength = 68 - SpvOpGenericPtrMemSemantics = 69 - SpvOpInBoundsPtrAccessChain = 70 - SpvOpDecorate = 71 - SpvOpMemberDecorate = 72 - SpvOpDecorationGroup = 73 - SpvOpGroupDecorate = 74 - SpvOpGroupMemberDecorate = 75 - SpvOpVectorExtractDynamic = 77 - SpvOpVectorInsertDynamic = 78 - SpvOpVectorShuffle = 79 - SpvOpCompositeConstruct = 80 - SpvOpCompositeExtract = 81 - SpvOpCompositeInsert = 82 - SpvOpCopyObject = 83 - SpvOpTranspose = 84 - SpvOpSampledImage = 86 - SpvOpImageSampleImplicitLod = 87 - SpvOpImageSampleExplicitLod = 88 - SpvOpImageSampleDrefImplicitLod = 89 - SpvOpImageSampleDrefExplicitLod = 90 - SpvOpImageSampleProjImplicitLod = 91 - SpvOpImageSampleProjExplicitLod = 92 - SpvOpImageSampleProjDrefImplicitLod = 93 - SpvOpImageSampleProjDrefExplicitLod = 94 - SpvOpImageFetch = 95 - SpvOpImageGather = 96 - SpvOpImageDrefGather = 97 - SpvOpImageRead = 98 - SpvOpImageWrite = 99 - SpvOpImage = 100 - SpvOpImageQueryFormat = 101 - SpvOpImageQueryOrder = 102 - SpvOpImageQuerySizeLod = 103 - SpvOpImageQuerySize = 104 - SpvOpImageQueryLod = 105 - SpvOpImageQueryLevels = 106 - SpvOpImageQuerySamples = 107 - SpvOpConvertFToU = 109 - SpvOpConvertFToS = 110 - SpvOpConvertSToF = 111 - SpvOpConvertUToF = 112 - SpvOpUConvert = 113 - SpvOpSConvert = 114 - SpvOpFConvert = 115 - SpvOpQuantizeToF16 = 116 - SpvOpConvertPtrToU = 117 - SpvOpSatConvertSToU = 118 - SpvOpSatConvertUToS = 119 - SpvOpConvertUToPtr = 120 - SpvOpPtrCastToGeneric = 121 - SpvOpGenericCastToPtr = 122 - SpvOpGenericCastToPtrExplicit = 123 - SpvOpBitcast = 124 - SpvOpSNegate = 126 - SpvOpFNegate = 127 - SpvOpIAdd = 128 - SpvOpFAdd = 129 - SpvOpISub = 130 - SpvOpFSub = 131 - SpvOpIMul = 132 - SpvOpFMul = 133 - SpvOpUDiv = 134 - SpvOpSDiv = 135 - SpvOpFDiv = 136 - SpvOpUMod = 137 - SpvOpSRem = 138 - SpvOpSMod = 139 - SpvOpFRem = 140 - SpvOpFMod = 141 - SpvOpVectorTimesScalar = 142 - SpvOpMatrixTimesScalar = 143 - SpvOpVectorTimesMatrix = 144 - SpvOpMatrixTimesVector = 145 - SpvOpMatrixTimesMatrix = 146 - SpvOpOuterProduct = 147 - SpvOpDot = 148 - SpvOpIAddCarry = 149 - SpvOpISubBorrow = 150 - SpvOpUMulExtended = 151 - SpvOpSMulExtended = 152 - SpvOpAny = 154 - SpvOpAll = 155 - SpvOpIsNan = 156 - SpvOpIsInf = 157 - SpvOpIsFinite = 158 - SpvOpIsNormal = 159 - SpvOpSignBitSet = 160 - SpvOpLessOrGreater = 161 - SpvOpOrdered = 162 - SpvOpUnordered = 163 - SpvOpLogicalEqual = 164 - SpvOpLogicalNotEqual = 165 - SpvOpLogicalOr = 166 - SpvOpLogicalAnd = 167 - SpvOpLogicalNot = 168 - SpvOpSelect = 169 - SpvOpIEqual = 170 - SpvOpINotEqual = 171 - SpvOpUGreaterThan = 172 - SpvOpSGreaterThan = 173 - SpvOpUGreaterThanEqual = 174 - SpvOpSGreaterThanEqual = 175 - SpvOpULessThan = 176 - SpvOpSLessThan = 177 - SpvOpULessThanEqual = 178 - SpvOpSLessThanEqual = 179 - SpvOpFOrdEqual = 180 - SpvOpFUnordEqual = 181 - SpvOpFOrdNotEqual = 182 - SpvOpFUnordNotEqual = 183 - SpvOpFOrdLessThan = 184 - SpvOpFUnordLessThan = 185 - SpvOpFOrdGreaterThan = 186 - SpvOpFUnordGreaterThan = 187 - SpvOpFOrdLessThanEqual = 188 - SpvOpFUnordLessThanEqual = 189 - SpvOpFOrdGreaterThanEqual = 190 - SpvOpFUnordGreaterThanEqual = 191 - SpvOpShiftRightLogical = 194 - SpvOpShiftRightArithmetic = 195 - SpvOpShiftLeftLogical = 196 - SpvOpBitwiseOr = 197 - SpvOpBitwiseXor = 198 - SpvOpBitwiseAnd = 199 - SpvOpNot = 200 - SpvOpBitFieldInsert = 201 - SpvOpBitFieldSExtract = 202 - SpvOpBitFieldUExtract = 203 - SpvOpBitReverse = 204 - SpvOpBitCount = 205 - SpvOpDPdx = 207 - SpvOpDPdy = 208 - SpvOpFwidth = 209 - SpvOpDPdxFine = 210 - SpvOpDPdyFine = 211 - SpvOpFwidthFine = 212 - SpvOpDPdxCoarse = 213 - SpvOpDPdyCoarse = 214 - SpvOpFwidthCoarse = 215 - SpvOpEmitVertex = 218 - SpvOpEndPrimitive = 219 - SpvOpEmitStreamVertex = 220 - SpvOpEndStreamPrimitive = 221 - SpvOpControlBarrier = 224 - SpvOpMemoryBarrier = 225 - SpvOpAtomicLoad = 227 - SpvOpAtomicStore = 228 - SpvOpAtomicExchange = 229 - SpvOpAtomicCompareExchange = 230 - SpvOpAtomicCompareExchangeWeak = 231 - SpvOpAtomicIIncrement = 232 - SpvOpAtomicIDecrement = 233 - SpvOpAtomicIAdd = 234 - SpvOpAtomicISub = 235 - SpvOpAtomicSMin = 236 - SpvOpAtomicUMin = 237 - SpvOpAtomicSMax = 238 - SpvOpAtomicUMax = 239 - SpvOpAtomicAnd = 240 - SpvOpAtomicOr = 241 - SpvOpAtomicXor = 242 - SpvOpPhi = 245 - SpvOpLoopMerge = 246 - SpvOpSelectionMerge = 247 - SpvOpLabel = 248 - SpvOpBranch = 249 - SpvOpBranchConditional = 250 - SpvOpSwitch = 251 - SpvOpKill = 252 - SpvOpReturn = 253 - SpvOpReturnValue = 254 - SpvOpUnreachable = 255 - SpvOpLifetimeStart = 256 - SpvOpLifetimeStop = 257 - SpvOpGroupAsyncCopy = 259 - SpvOpGroupWaitEvents = 260 - SpvOpGroupAll = 261 - SpvOpGroupAny = 262 - SpvOpGroupBroadcast = 263 - SpvOpGroupIAdd = 264 - SpvOpGroupFAdd = 265 - SpvOpGroupFMin = 266 - SpvOpGroupUMin = 267 - SpvOpGroupSMin = 268 - SpvOpGroupFMax = 269 - SpvOpGroupUMax = 270 - SpvOpGroupSMax = 271 - SpvOpReadPipe = 274 - SpvOpWritePipe = 275 - SpvOpReservedReadPipe = 276 - SpvOpReservedWritePipe = 277 - SpvOpReserveReadPipePackets = 278 - SpvOpReserveWritePipePackets = 279 - SpvOpCommitReadPipe = 280 - SpvOpCommitWritePipe = 281 - SpvOpIsValidReserveId = 282 - SpvOpGetNumPipePackets = 283 - SpvOpGetMaxPipePackets = 284 - SpvOpGroupReserveReadPipePackets = 285 - SpvOpGroupReserveWritePipePackets = 286 - SpvOpGroupCommitReadPipe = 287 - SpvOpGroupCommitWritePipe = 288 - SpvOpEnqueueMarker = 291 - SpvOpEnqueueKernel = 292 - SpvOpGetKernelNDrangeSubGroupCount = 293 - SpvOpGetKernelNDrangeMaxSubGroupSize = 294 - SpvOpGetKernelWorkGroupSize = 295 - SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296 - SpvOpRetainEvent = 297 - SpvOpReleaseEvent = 298 - SpvOpCreateUserEvent = 299 - SpvOpIsValidEvent = 300 - SpvOpSetUserEventStatus = 301 - SpvOpCaptureEventProfilingInfo = 302 - SpvOpGetDefaultQueue = 303 - SpvOpBuildNDRange = 304 - SpvOpImageSparseSampleImplicitLod = 305 - SpvOpImageSparseSampleExplicitLod = 306 - SpvOpImageSparseSampleDrefImplicitLod = 307 - SpvOpImageSparseSampleDrefExplicitLod = 308 - SpvOpImageSparseSampleProjImplicitLod = 309 - SpvOpImageSparseSampleProjExplicitLod = 310 - SpvOpImageSparseSampleProjDrefImplicitLod = 311 - SpvOpImageSparseSampleProjDrefExplicitLod = 312 - SpvOpImageSparseFetch = 313 - SpvOpImageSparseGather = 314 - SpvOpImageSparseDrefGather = 315 - SpvOpImageSparseTexelsResident = 316 - SpvOpNoLine = 317 - SpvOpAtomicFlagTestAndSet = 318 - SpvOpAtomicFlagClear = 319 - SpvOpImageSparseRead = 320 - SpvOpSubgroupBallotKHR = 4421 - SpvOpSubgroupFirstInvocationKHR = 4422 - SpvOpMax = 2147483647 -end - - -const SpvOp = SpvOp_ diff --git a/gen/vk_api.jl b/gen/vk_api.jl deleted file mode 100755 index ca995ba..0000000 --- a/gen/vk_api.jl +++ /dev/null @@ -1,3851 +0,0 @@ -# Julia wrapper for header: /home/belmant/.julia/artifacts/2172e04648d8f007f61b8348c3172efb89619c1c/include/vulkan/vulkan.h -# Automatically generated using Clang.jl wrap_c - - -function vkCreateInstance(pCreateInfo, pAllocator, pInstance) - ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) -end - -function vkDestroyInstance(instance, pAllocator) - ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) -end - -function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) - ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) -end - -function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) -end - -function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) -end - -function vkGetInstanceProcAddr(instance, pName) - ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Cstring), instance, pName) -end - -function vkGetDeviceProcAddr(device, pName) - ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Cstring), device, pName) -end - -function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) - ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) -end - -function vkDestroyDevice(device, pAllocator) - ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) -end - -function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) - ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Cstring, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) - ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Cstring, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) - ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) -end - -function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) - ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) - ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) -end - -function vkQueueSubmit(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkQueueWaitIdle(queue) - ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) -end - -function vkDeviceWaitIdle(device) - ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) -end - -function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) - ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) -end - -function vkFreeMemory(device, memory, pAllocator) - ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) -end - -function vkMapMemory(device, memory, offset, size, flags, ppData) - ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) -end - -function vkUnmapMemory(device, memory) - ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) -end - -function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) - ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) - ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) - ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) -end - -function vkBindBufferMemory(device, buffer, memory, memoryOffset) - ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) -end - -function vkBindImageMemory(device, image, memory, memoryOffset) - ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) -end - -function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) -end - -function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) -end - -function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) - ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) -end - -function vkCreateFence(device, pCreateInfo, pAllocator, pFence) - ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) -end - -function vkDestroyFence(device, fence, pAllocator) - ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) -end - -function vkResetFences(device, fenceCount, pFences) - ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) -end - -function vkGetFenceStatus(device, fence) - ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) -end - -function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) - ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) -end - -function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) - ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) -end - -function vkDestroySemaphore(device, semaphore, pAllocator) - ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) -end - -function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) - ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) -end - -function vkDestroyEvent(device, event, pAllocator) - ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) -end - -function vkGetEventStatus(device, event) - ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkSetEvent(device, event) - ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkResetEvent(device, event) - ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) -end - -function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) - ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) -end - -function vkDestroyQueryPool(device, queryPool, pAllocator) - ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) -end - -function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) - ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) -end - -function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) - ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) -end - -function vkDestroyBuffer(device, buffer, pAllocator) - ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) -end - -function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) - ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyBufferView(device, bufferView, pAllocator) - ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) -end - -function vkCreateImage(device, pCreateInfo, pAllocator, pImage) - ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) -end - -function vkDestroyImage(device, image, pAllocator) - ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) -end - -function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) - ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) -end - -function vkCreateImageView(device, pCreateInfo, pAllocator, pView) - ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyImageView(device, imageView, pAllocator) - ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) -end - -function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) - ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) -end - -function vkDestroyShaderModule(device, shaderModule, pAllocator) - ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) -end - -function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) - ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) -end - -function vkDestroyPipelineCache(device, pipelineCache, pAllocator) - ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) -end - -function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) - ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) -end - -function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkDestroyPipeline(device, pipeline, pAllocator) - ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) -end - -function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) - ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) -end - -function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) - ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) -end - -function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) - ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) -end - -function vkDestroySampler(device, sampler, pAllocator) - ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) -end - -function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) - ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) -end - -function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) - ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) -end - -function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) - ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) -end - -function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) - ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) -end - -function vkResetDescriptorPool(device, descriptorPool, flags) - ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) -end - -function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) - ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) -end - -function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) - ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) -end - -function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) - ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) -end - -function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) - ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) -end - -function vkDestroyFramebuffer(device, framebuffer, pAllocator) - ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) -end - -function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkDestroyRenderPass(device, renderPass, pAllocator) - ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) -end - -function vkGetRenderAreaGranularity(device, renderPass, pGranularity) - ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) -end - -function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) - ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) -end - -function vkDestroyCommandPool(device, commandPool, pAllocator) - ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) -end - -function vkResetCommandPool(device, commandPool, flags) - ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) -end - -function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) - ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) -end - -function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) - ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) -end - -function vkBeginCommandBuffer(commandBuffer, pBeginInfo) - ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) -end - -function vkEndCommandBuffer(commandBuffer) - ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) -end - -function vkResetCommandBuffer(commandBuffer, flags) - ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) -end - -function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) - ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) -end - -function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) - ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) -end - -function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) - ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) -end - -function vkCmdSetLineWidth(commandBuffer, lineWidth) - ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) -end - -function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) - ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) -end - -function vkCmdSetBlendConstants(commandBuffer, blendConstants) - ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, NTuple{4, Cfloat}), commandBuffer, blendConstants) -end - -function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) - ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) -end - -function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) - ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) -end - -function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) - ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) -end - -function vkCmdSetStencilReference(commandBuffer, faceMask, reference) - ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) -end - -function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) - ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) -end - -function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) - ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) -end - -function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) - ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) -end - -function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) - ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) -end - -function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) - ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) -end - -function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end - -function vkCmdDispatchIndirect(commandBuffer, buffer, offset) - ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) -end - -function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) - ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) -end - -function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) - ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) -end - -function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) - ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) -end - -function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) - ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) -end - -function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) - ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) -end - -function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) - ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) -end - -function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) - ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) -end - -function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) - ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) -end - -function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) - ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdSetEvent(commandBuffer, event, stageMask) - ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdResetEvent(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) - ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) - ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) - ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) -end - -function vkCmdEndQuery(commandBuffer, queryPool, query) - ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) -end - -function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) - ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) -end - -function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) - ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) -end - -function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) - ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) -end - -function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) - ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) -end - -function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) - ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) -end - -function vkCmdNextSubpass(commandBuffer, contents) - ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) -end - -function vkCmdEndRenderPass(commandBuffer) - ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) - ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) -end - -function vkEnumerateInstanceVersion(pApiVersion) - ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) -end - -function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMask(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkTrimCommandPool(device, commandPool, flags) - ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkGetDeviceQueue2(device, pQueueInfo, pQueue) - ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) -end - -function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkResetQueryPool(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkGetSemaphoreCounterValue(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphores(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphore(device, pSignalInfo) - ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetBufferDeviceAddress(device, pInfo) - ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddress(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -function vkDestroySurfaceKHR(instance, surface, pAllocator) - ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end - -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) - ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) -end - -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) -end - -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) - ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) -end - -function vkDestroySwapchainKHR(device, swapchain, pAllocator) - ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) -end - -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) - ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) -end - -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) - ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) -end - -function vkQueuePresentKHR(queue, pPresentInfo) - ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) -end - -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) - ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) -end - -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) -end - -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) - ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) -end - -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) - ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) -end - -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) - ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) -end - -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) - ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) -end - -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) -end - -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) - ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) -end - -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) - ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) - ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) - ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) - ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) - ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) - ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) - ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) - ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) - ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkTrimCommandPoolKHR(device, commandPool, flags) - ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) - ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) - ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) - ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) -end - -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) - ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) - ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) -end - -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) - ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) -end - -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) - ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) -end - -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) - ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) - ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) - ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) - ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) - ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) - ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) - ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkGetSwapchainStatusKHR(device, swapchain) - ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) - ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkImportFenceFdKHR(device, pImportFenceFdInfo) - ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end - -function vkGetFenceFdKHR(device, pGetFdInfo, pFd) - ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) - ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) -end - -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) - ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) -end - -function vkAcquireProfilingLockKHR(device, pInfo) - ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) -end - -function vkReleaseProfilingLockKHR(device) - ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) -end - -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) - ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) - ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) - ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) -end - -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) - ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) - ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) - ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) - ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) - ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) - ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) - ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) - ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphoreKHR(device, pSignalInfo) - ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) - ccall((:vkGetPhysicalDeviceFragmentShadingRatesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end - -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps) - ccall((:vkCmdSetFragmentShadingRateKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, NTuple{2, VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end - -function vkGetBufferDeviceAddressKHR(device, pInfo) - ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) - ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation) - ccall((:vkCreateDeferredOperationKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end - -function vkDestroyDeferredOperationKHR(device, operation, pAllocator) - ccall((:vkDestroyDeferredOperationKHR, libvulkan), Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) -end - -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation) - ccall((:vkGetDeferredOperationMaxConcurrencyKHR, libvulkan), UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetDeferredOperationResultKHR(device, operation) - ccall((:vkGetDeferredOperationResultKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkDeferredOperationJoinKHR(device, operation) - ccall((:vkDeferredOperationJoinKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) - ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end - -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) - ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end - -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) - ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end - -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo) - ccall((:vkCmdSetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfoKHR}), commandBuffer, event, pDependencyInfo) -end - -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask) - ccall((:vkCmdResetEvent2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2KHR), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos) - ccall((:vkCmdWaitEvents2KHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfoKHR}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end - -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo) - ccall((:vkCmdPipelineBarrier2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfoKHR}), commandBuffer, pDependencyInfo) -end - -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query) - ccall((:vkCmdWriteTimestamp2KHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2KHR, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end - -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence) - ccall((:vkQueueSubmit2KHR, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2KHR}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarker2AMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags2KHR, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end - -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointData2NV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end - -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo) - ccall((:vkCmdCopyBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2KHR}), commandBuffer, pCopyBufferInfo) -end - -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo) - ccall((:vkCmdCopyImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2KHR}), commandBuffer, pCopyImageInfo) -end - -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo) - ccall((:vkCmdCopyBufferToImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2KHR}), commandBuffer, pCopyBufferToImageInfo) -end - -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo) - ccall((:vkCmdCopyImageToBuffer2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2KHR}), commandBuffer, pCopyImageToBufferInfo) -end - -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo) - ccall((:vkCmdBlitImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2KHR}), commandBuffer, pBlitImageInfo) -end - -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo) - ccall((:vkCmdResolveImage2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2KHR}), commandBuffer, pResolveImageInfo) -end - -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) - ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) -end - -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) - ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) -end - -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) - ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Cstring, Cstring), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) -end - -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) - ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end - -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) - ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end - -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdDebugMarkerEndEXT(commandBuffer) - ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) - ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) - ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) -end - -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) - ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) - ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) -end - -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) - ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) -end - -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) - ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) -end - -function vkGetImageViewHandleNVX(device, pInfo) - ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end - -function vkGetImageViewAddressNVX(device, imageView, pProperties) - ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end - -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) - ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) -end - -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) - ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) -end - -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) - ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer) - ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) - ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end - -function vkReleaseDisplayEXT(physicalDevice, display) - ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) - ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) - ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) -end - -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) - ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end - -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) - ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) -end - -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) - ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) -end - -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) - ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) -end - -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) - ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) -end - -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) - ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end - -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) - ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) -end - -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) - ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) -end - -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) - ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) -end - -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkQueueEndDebugUtilsLabelEXT(queue) - ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) -end - -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) - ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCmdEndDebugUtilsLabelEXT(commandBuffer) - ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) - ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) - ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) -end - -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) - ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end - -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) - ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) -end - -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) - ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end - -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) - ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) -end - -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) - ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end - -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) - ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) -end - -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) - ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) -end - -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) - ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) - ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end - -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) - ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) -end - -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) - ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) -end - -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) - ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) -end - -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end - -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) - ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) -end - -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) - ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) -end - -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) - ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) -end - -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) - ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) -end - -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) - ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) -end - -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkCompileDeferredNV(device, pipeline, shader) - ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) -end - -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) - ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) -end - -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) - ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) -end - -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) - ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) -end - -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) - ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) -end - -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) - ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end - -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) - ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) - ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) -end - -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) - ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end - -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) - ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) -end - -function vkInitializePerformanceApiINTEL(device, pInitializeInfo) - ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) -end - -function vkUninitializePerformanceApiINTEL(device) - ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) -end - -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) - ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) - ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) -end - -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) - ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) -end - -function vkReleasePerformanceConfigurationINTEL(device, configuration) - ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) -end - -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) - ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) -end - -function vkGetPerformanceParameterINTEL(device, parameter, pValue) - ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) -end - -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) - ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) -end - -function vkGetBufferDeviceAddressEXT(device, pInfo) - ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) - ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) -end - -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) - ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) - ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end - -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) - ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) -end - -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) - ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkCmdSetCullModeEXT(commandBuffer, cullMode) - ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) -end - -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) - ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) -end - -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) - ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) -end - -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) - ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) -end - -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) - ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end - -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) - ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end - -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) - ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end - -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) - ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) -end - -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) - ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) -end - -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) - ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) -end - -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) - ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) -end - -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) - ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) -end - -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) - ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) - ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) -end - -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) - ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) -end - -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) - ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end - -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) - ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) -end - -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) - ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) -end - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) - ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) -end - -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) - ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) -end - -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) - ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end - -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) - ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps) - ccall((:vkCmdSetFragmentShadingRateEnumNV, libvulkan), Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, NTuple{2, VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) -end - -function vkAcquireWinrtDisplayNV(physicalDevice, display) - ccall((:vkAcquireWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay) - ccall((:vkGetWinrtDisplayNV, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) -end - -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) - ccall((:vkCmdSetVertexInputEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) -end - -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints) - ccall((:vkCmdSetPatchControlPointsEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) -end - -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable) - ccall((:vkCmdSetRasterizerDiscardEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) -end - -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable) - ccall((:vkCmdSetDepthBiasEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end - -function vkCmdSetLogicOpEXT(commandBuffer, logicOp) - ccall((:vkCmdSetLogicOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) -end - -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable) - ccall((:vkCmdSetPrimitiveRestartEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) -end - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables) - ccall((:vkCmdSetColorWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) -end - -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure) - ccall((:vkCreateAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) - ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkCmdBuildAccelerationStructuresKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end - -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) - ccall((:vkCmdBuildAccelerationStructuresIndirectKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end - -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) - ccall((:vkBuildAccelerationStructuresKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end - -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end - -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo) - ccall((:vkCopyAccelerationStructureToMemoryKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end - -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo) - ccall((:vkCopyMemoryToAccelerationStructureKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end - -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) - ccall((:vkWriteAccelerationStructuresPropertiesKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end - -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyAccelerationStructureToMemoryKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo) - ccall((:vkCmdCopyMemoryToAccelerationStructureKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo) - ccall((:vkGetAccelerationStructureDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end - -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) - ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility) - ccall((:vkGetDeviceAccelerationStructureCompatibilityKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end - -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) - ccall((:vkGetAccelerationStructureBuildSizesKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end - -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) - ccall((:vkCmdTraceRaysKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end - -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) - ccall((:vkCreateRayTracingPipelinesKHR, libvulkan), VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) - ccall((:vkGetRayTracingCaptureReplayShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) - ccall((:vkCmdTraceRaysIndirectKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end - -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader) - ccall((:vkGetRayTracingShaderGroupStackSizeKHR, libvulkan), VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end - -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize) - ccall((:vkCmdSetRayTracingPipelineStackSizeKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end - -function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateAndroidSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties) - ccall((:vkGetAndroidHardwareBufferPropertiesANDROID, libvulkan), VkResult, (VkDevice, Ptr{AHardwareBuffer}, Ptr{VkAndroidHardwareBufferPropertiesANDROID}), device, buffer, pProperties) -end - -function vkGetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer) - ccall((:vkGetMemoryAndroidHardwareBufferANDROID, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetAndroidHardwareBufferInfoANDROID}, Ptr{Ptr{AHardwareBuffer}}), device, pInfo, pBuffer) -end - -function vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateImagePipeSurfaceFUCHSIA, libvulkan), VkResult, (VkInstance, Ptr{VkImagePipeSurfaceCreateInfoFUCHSIA}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle) - ccall((:vkGetMemoryZirconHandleFUCHSIA, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetZirconHandleInfoFUCHSIA}, Ptr{Cint}), device, pGetZirconHandleInfo, pZirconHandle) -end - -function vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties) - ccall((:vkGetMemoryZirconHandlePropertiesFUCHSIA, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryZirconHandlePropertiesFUCHSIA}), device, handleType, zirconHandle, pMemoryZirconHandleProperties) -end - -function vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo) - ccall((:vkImportSemaphoreZirconHandleFUCHSIA, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreZirconHandleInfoFUCHSIA}), device, pImportSemaphoreZirconHandleInfo) -end - -function vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle) - ccall((:vkGetSemaphoreZirconHandleFUCHSIA, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetZirconHandleInfoFUCHSIA}, Ptr{Cint}), device, pGetZirconHandleInfo, pZirconHandle) -end - -function vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateIOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkIOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateViSurfaceNN, libvulkan), VkResult, (VkInstance, Ptr{VkViSurfaceCreateInfoNN}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) - ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end - -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) - ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end - -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) - ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end - -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) - ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end - -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) - ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end - -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) - ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) - ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{Cint}), device, memory, handleType, pHandle) -end - -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) - ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end - -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) - ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) - ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end - -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) - ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end - -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) - ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end - -function vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateDirectFBSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDirectFBSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb) - ccall((:vkGetPhysicalDeviceDirectFBPresentationSupportEXT, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}), physicalDevice, queueFamilyIndex, dfb) -end - -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) - ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end - -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) - ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end - -function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateStreamDescriptorSurfaceGGP, libvulkan), VkResult, (VkInstance, Ptr{VkStreamDescriptorSurfaceCreateInfoGGP}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface) - ccall((:vkCreateScreenSurfaceQNX, libvulkan), VkResult, (VkInstance, Ptr{VkScreenSurfaceCreateInfoQNX}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window) - ccall((:vkGetPhysicalDeviceScreenPresentationSupportQNX, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{_screen_window}), physicalDevice, queueFamilyIndex, window) -end - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities) - ccall((:vkGetPhysicalDeviceVideoCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end - -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) - ccall((:vkGetPhysicalDeviceVideoFormatPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) -end - -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession) - ccall((:vkCreateVideoSessionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) -end - -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator) - ccall((:vkDestroyVideoSessionKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) -end - -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements) - ccall((:vkGetVideoSessionMemoryRequirementsKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoGetMemoryPropertiesKHR}), device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements) -end - -function vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories) - ccall((:vkBindVideoSessionMemoryKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkVideoBindMemoryKHR}), device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories) -end - -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters) - ccall((:vkCreateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end - -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo) - ccall((:vkUpdateVideoSessionParametersKHR, libvulkan), VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) -end - -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator) - ccall((:vkDestroyVideoSessionParametersKHR, libvulkan), Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) -end - -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo) - ccall((:vkCmdBeginVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) -end - -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo) - ccall((:vkCmdEndVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) -end - -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo) - ccall((:vkCmdControlVideoCodingKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) -end - -function vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo) - ccall((:vkCmdDecodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pFrameInfo) -end - -function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo) - ccall((:vkCmdEncodeVideoKHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) -end - -function vkCreateInstance(pCreateInfo, pAllocator, pInstance, fun_ptr) - ccall(fun_ptr, VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) -end - -function vkDestroyInstance(instance, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) -end - -function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) -end - -function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) -end - -function vkGetPhysicalDeviceProperties(physicalDevice, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) -end - -function vkGetInstanceProcAddr(instance, pName, fun_ptr) - ccall(fun_ptr, PFN_vkVoidFunction, (VkInstance, Cstring), instance, pName) -end - -function vkGetDeviceProcAddr(device, pName, fun_ptr) - ccall(fun_ptr, PFN_vkVoidFunction, (VkDevice, Cstring), device, pName) -end - -function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) -end - -function vkDestroyDevice(device, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) -end - -function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (Cstring, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Cstring, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) -end - -function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) -end - -function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) -end - -function vkQueueSubmit(queue, submitCount, pSubmits, fence, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkQueueWaitIdle(queue, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue,), queue) -end - -function vkDeviceWaitIdle(device, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice,), device) -end - -function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) -end - -function vkFreeMemory(device, memory, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) -end - -function vkMapMemory(device, memory, offset, size, flags, ppData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) -end - -function vkUnmapMemory(device, memory, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDeviceMemory), device, memory) -end - -function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) -end - -function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) -end - -function vkBindBufferMemory(device, buffer, memory, memoryOffset, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) -end - -function vkBindImageMemory(device, image, memory, memoryOffset, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) -end - -function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) -end - -function vkGetImageMemoryRequirements(device, image, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) -end - -function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) -end - -function vkCreateFence(device, pCreateInfo, pAllocator, pFence, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) -end - -function vkDestroyFence(device, fence, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) -end - -function vkResetFences(device, fenceCount, pFences, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) -end - -function vkGetFenceStatus(device, fence, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkFence), device, fence) -end - -function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) -end - -function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) -end - -function vkDestroySemaphore(device, semaphore, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) -end - -function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) -end - -function vkDestroyEvent(device, event, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) -end - -function vkGetEventStatus(device, event, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkEvent), device, event) -end - -function vkSetEvent(device, event, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkEvent), device, event) -end - -function vkResetEvent(device, event, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkEvent), device, event) -end - -function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) -end - -function vkDestroyQueryPool(device, queryPool, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) -end - -function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) -end - -function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) -end - -function vkDestroyBuffer(device, buffer, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) -end - -function vkCreateBufferView(device, pCreateInfo, pAllocator, pView, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyBufferView(device, bufferView, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) -end - -function vkCreateImage(device, pCreateInfo, pAllocator, pImage, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) -end - -function vkDestroyImage(device, image, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) -end - -function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) -end - -function vkCreateImageView(device, pCreateInfo, pAllocator, pView, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) -end - -function vkDestroyImageView(device, imageView, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) -end - -function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) -end - -function vkDestroyShaderModule(device, shaderModule, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) -end - -function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) -end - -function vkDestroyPipelineCache(device, pipelineCache, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) -end - -function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) -end - -function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkDestroyPipeline(device, pipeline, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) -end - -function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) -end - -function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) -end - -function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) -end - -function vkDestroySampler(device, sampler, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) -end - -function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) -end - -function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) -end - -function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) -end - -function vkDestroyDescriptorPool(device, descriptorPool, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) -end - -function vkResetDescriptorPool(device, descriptorPool, flags, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) -end - -function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) -end - -function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) -end - -function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) -end - -function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) -end - -function vkDestroyFramebuffer(device, framebuffer, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) -end - -function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkDestroyRenderPass(device, renderPass, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) -end - -function vkGetRenderAreaGranularity(device, renderPass, pGranularity, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) -end - -function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) -end - -function vkDestroyCommandPool(device, commandPool, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) -end - -function vkResetCommandPool(device, commandPool, flags, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) -end - -function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) -end - -function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) -end - -function vkBeginCommandBuffer(commandBuffer, pBeginInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) -end - -function vkEndCommandBuffer(commandBuffer, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer,), commandBuffer) -end - -function vkResetCommandBuffer(commandBuffer, flags, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) -end - -function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) -end - -function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) -end - -function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) -end - -function vkCmdSetLineWidth(commandBuffer, lineWidth, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) -end - -function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) -end - -function vkCmdSetBlendConstants(commandBuffer, blendConstants, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, NTuple{4, Cfloat}), commandBuffer, blendConstants) -end - -function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) -end - -function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) -end - -function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) -end - -function vkCmdSetStencilReference(commandBuffer, faceMask, reference, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) -end - -function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) -end - -function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) -end - -function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) -end - -function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) -end - -function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) -end - -function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) -end - -function vkCmdDispatchIndirect(commandBuffer, buffer, offset, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) -end - -function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) -end - -function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) -end - -function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) -end - -function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) -end - -function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) -end - -function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) -end - -function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) -end - -function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) -end - -function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) -end - -function vkCmdSetEvent(commandBuffer, event, stageMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdResetEvent(commandBuffer, event, stageMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) -end - -function vkCmdBeginQuery(commandBuffer, queryPool, query, flags, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) -end - -function vkCmdEndQuery(commandBuffer, queryPool, query, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) -end - -function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) -end - -function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) -end - -function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) -end - -function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) -end - -function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) -end - -function vkCmdNextSubpass(commandBuffer, contents, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) -end - -function vkCmdEndRenderPass(commandBuffer, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) -end - -function vkEnumerateInstanceVersion(pApiVersion, fun_ptr) - ccall(fun_ptr, VkResult, (Ptr{UInt32},), pApiVersion) -end - -function vkBindBufferMemory2(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMask(commandBuffer, deviceMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkTrimCommandPool(device, commandPool, flags, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkGetDeviceQueue2(device, pQueueInfo, pQueue, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) -end - -function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkResetQueryPool(device, queryPool, firstQuery, queryCount, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkGetSemaphoreCounterValue(device, semaphore, pValue, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphores(device, pWaitInfo, timeout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphore(device, pSignalInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetBufferDeviceAddress(device, pInfo, fun_ptr) - ccall(fun_ptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddress(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -function vkDestroySurfaceKHR(instance, surface, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) -end - -function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) -end - -function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) -end - -function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) -end - -function vkDestroySwapchainKHR(device, swapchain, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) -end - -function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) -end - -function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) -end - -function vkQueuePresentKHR(queue, pPresentInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) -end - -function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) -end - -function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) -end - -function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) -end - -function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) -end - -function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) -end - -function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) -end - -function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) -end - -function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) -end - -function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) -end - -function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) -end - -function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) -end - -function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) -end - -function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) -end - -function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) -end - -function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) -end - -function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) -end - -function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) -end - -function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) -end - -function vkTrimCommandPoolKHR(device, commandPool, flags, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) -end - -function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) -end - -function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) -end - -function vkGetMemoryFdKHR(device, pGetFdInfo, pFd, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) -end - -function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) -end - -function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) -end - -function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) -end - -function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) -end - -function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) -end - -function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) -end - -function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) -end - -function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) -end - -function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) -end - -function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) -end - -function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) -end - -function vkGetSwapchainStatusKHR(device, swapchain, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) -end - -function vkImportFenceFdKHR(device, pImportFenceFdInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) -end - -function vkGetFenceFdKHR(device, pGetFdInfo, pFd, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) -end - -function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) -end - -function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) -end - -function vkAcquireProfilingLockKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) -end - -function vkReleaseProfilingLockKHR(device, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice,), device) -end - -function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) -end - -function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) -end - -function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) -end - -function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) -end - -function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) -end - -function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) -end - -function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) -end - -function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) -end - -function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) -end - -function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) -end - -function vkWaitSemaphoresKHR(device, pWaitInfo, timeout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) -end - -function vkSignalSemaphoreKHR(device, pSignalInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) -end - -function vkGetPhysicalDeviceFragmentShadingRatesKHR(physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceFragmentShadingRateKHR}), physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates) -end - -function vkCmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkExtent2D}, NTuple{2, VkFragmentShadingRateCombinerOpKHR}), commandBuffer, pFragmentSize, combinerOps) -end - -function vkGetBufferDeviceAddressKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) -end - -function vkCreateDeferredOperationKHR(device, pAllocator, pDeferredOperation, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAllocationCallbacks}, Ptr{VkDeferredOperationKHR}), device, pAllocator, pDeferredOperation) -end - -function vkDestroyDeferredOperationKHR(device, operation, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkDeferredOperationKHR, Ptr{VkAllocationCallbacks}), device, operation, pAllocator) -end - -function vkGetDeferredOperationMaxConcurrencyKHR(device, operation, fun_ptr) - ccall(fun_ptr, UInt32, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetDeferredOperationResultKHR(device, operation, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkDeferredOperationJoinKHR(device, operation, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR), device, operation) -end - -function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) -end - -function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) -end - -function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) -end - -function vkCmdSetEvent2KHR(commandBuffer, event, pDependencyInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkEvent, Ptr{VkDependencyInfoKHR}), commandBuffer, event, pDependencyInfo) -end - -function vkCmdResetEvent2KHR(commandBuffer, event, stageMask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags2KHR), commandBuffer, event, stageMask) -end - -function vkCmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, Ptr{VkDependencyInfoKHR}), commandBuffer, eventCount, pEvents, pDependencyInfos) -end - -function vkCmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDependencyInfoKHR}), commandBuffer, pDependencyInfo) -end - -function vkCmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2KHR, VkQueryPool, UInt32), commandBuffer, stage, queryPool, query) -end - -function vkQueueSubmit2KHR(queue, submitCount, pSubmits, fence, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo2KHR}, VkFence), queue, submitCount, pSubmits, fence) -end - -function vkCmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlags2KHR, VkBuffer, VkDeviceSize, UInt32), commandBuffer, stage, dstBuffer, dstOffset, marker) -end - -function vkGetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointData2NV}), queue, pCheckpointDataCount, pCheckpointData) -end - -function vkCmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferInfo2KHR}), commandBuffer, pCopyBufferInfo) -end - -function vkCmdCopyImage2KHR(commandBuffer, pCopyImageInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageInfo2KHR}), commandBuffer, pCopyImageInfo) -end - -function vkCmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyBufferToImageInfo2KHR}), commandBuffer, pCopyBufferToImageInfo) -end - -function vkCmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyImageToBufferInfo2KHR}), commandBuffer, pCopyImageToBufferInfo) -end - -function vkCmdBlitImage2KHR(commandBuffer, pBlitImageInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkBlitImageInfo2KHR}), commandBuffer, pBlitImageInfo) -end - -function vkCmdResolveImage2KHR(commandBuffer, pResolveImageInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkResolveImageInfo2KHR}), commandBuffer, pResolveImageInfo) -end - -function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) -end - -function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) -end - -function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Cstring, Cstring), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) -end - -function vkDebugMarkerSetObjectTagEXT(device, pTagInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) -end - -function vkDebugMarkerSetObjectNameEXT(device, pNameInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) -end - -function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdDebugMarkerEndEXT(commandBuffer, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) -end - -function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) -end - -function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) -end - -function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) -end - -function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) -end - -function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) -end - -function vkGetImageViewHandleNVX(device, pInfo, fun_ptr) - ccall(fun_ptr, UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) -end - -function vkGetImageViewAddressNVX(device, imageView, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) -end - -function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) -end - -function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) -end - -function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) -end - -function vkCmdEndConditionalRenderingEXT(commandBuffer, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) -end - -function vkReleaseDisplayEXT(physicalDevice, display, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) -end - -function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) -end - -function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) -end - -function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) -end - -function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) -end - -function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) -end - -function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) -end - -function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) -end - -function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) -end - -function vkSetDebugUtilsObjectNameEXT(device, pNameInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) -end - -function vkSetDebugUtilsObjectTagEXT(device, pTagInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) -end - -function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkQueueEndDebugUtilsLabelEXT(queue, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue,), queue) -end - -function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) -end - -function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCmdEndDebugUtilsLabelEXT(commandBuffer, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer,), commandBuffer) -end - -function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) -end - -function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) -end - -function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) -end - -function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) -end - -function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) -end - -function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties, fun_ptr) - ccall(fun_ptr, Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) -end - -function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) -end - -function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) -end - -function vkDestroyValidationCacheEXT(device, validationCache, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) -end - -function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) -end - -function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) -end - -function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) -end - -function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) -end - -function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) -end - -function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkAccelerationStructureNV, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) -end - -function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoNV}), device, bindInfoCount, pBindInfos) -end - -function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureNV, VkAccelerationStructureNV, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) -end - -function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkAccelerationStructureNV, VkAccelerationStructureNV, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) -end - -function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) -end - -function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkAccelerationStructureNV, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) -end - -function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureNV}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkCompileDeferredNV(device, pipeline, shader, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) -end - -function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) -end - -function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) -end - -function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) -end - -function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) -end - -function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) -end - -function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) -end - -function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) -end - -function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) -end - -function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) -end - -function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) -end - -function vkInitializePerformanceApiINTEL(device, pInitializeInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) -end - -function vkUninitializePerformanceApiINTEL(device, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice,), device) -end - -function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) -end - -function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) -end - -function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) -end - -function vkReleasePerformanceConfigurationINTEL(device, configuration, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) -end - -function vkQueueSetPerformanceConfigurationINTEL(queue, configuration, fun_ptr) - ccall(fun_ptr, VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) -end - -function vkGetPerformanceParameterINTEL(device, parameter, pValue, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) -end - -function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) -end - -function vkGetBufferDeviceAddressEXT(device, pInfo, fun_ptr) - ccall(fun_ptr, VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) -end - -function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) -end - -function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) -end - -function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) -end - -function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) -end - -function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) -end - -function vkCmdSetCullModeEXT(commandBuffer, cullMode, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) -end - -function vkCmdSetFrontFaceEXT(commandBuffer, frontFace, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) -end - -function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) -end - -function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) -end - -function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) -end - -function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) -end - -function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) -end - -function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) -end - -function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) -end - -function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) -end - -function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) -end - -function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) -end - -function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) -end - -function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) -end - -function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) -end - -function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) -end - -function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) -end - -function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) -end - -function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) -end - -function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) -end - -function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) -end - -function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) -end - -function vkCmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkFragmentShadingRateNV, NTuple{2, VkFragmentShadingRateCombinerOpKHR}), commandBuffer, shadingRate, combinerOps) -end - -function vkAcquireWinrtDisplayNV(physicalDevice, display, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) -end - -function vkGetWinrtDisplayNV(physicalDevice, deviceRelativeId, pDisplay, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, UInt32, Ptr{VkDisplayKHR}), physicalDevice, deviceRelativeId, pDisplay) -end - -function vkCmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkVertexInputBindingDescription2EXT}, UInt32, Ptr{VkVertexInputAttributeDescription2EXT}), commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions) -end - -function vkCmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, patchControlPoints) -end - -function vkCmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, rasterizerDiscardEnable) -end - -function vkCmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBiasEnable) -end - -function vkCmdSetLogicOpEXT(commandBuffer, logicOp, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkLogicOp), commandBuffer, logicOp) -end - -function vkCmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, primitiveRestartEnable) -end - -function vkCmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkBool32}), commandBuffer, attachmentCount, pColorWriteEnables) -end - -function vkCreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureKHR}), device, pCreateInfo, pAllocator, pAccelerationStructure) -end - -function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) -end - -function vkCmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), commandBuffer, infoCount, pInfos, ppBuildRangeInfos) -end - -function vkCmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{VkDeviceAddress}, Ptr{UInt32}, Ptr{Ptr{UInt32}}), commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts) -end - -function vkBuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, UInt32, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{Ptr{VkAccelerationStructureBuildRangeInfoKHR}}), device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos) -end - -function vkCopyAccelerationStructureKHR(device, deferredOperation, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end - -function vkCopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), device, deferredOperation, pInfo) -end - -function vkCopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), device, deferredOperation, pInfo) -end - -function vkWriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, Csize_t, Ptr{Cvoid}, Csize_t), device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride) -end - -function vkCmdCopyAccelerationStructureKHR(commandBuffer, pInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyAccelerationStructureToMemoryInfoKHR}), commandBuffer, pInfo) -end - -function vkCmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkCopyMemoryToAccelerationStructureInfoKHR}), commandBuffer, pInfo) -end - -function vkGetAccelerationStructureDeviceAddressKHR(device, pInfo, fun_ptr) - ccall(fun_ptr, VkDeviceAddress, (VkDevice, Ptr{VkAccelerationStructureDeviceAddressInfoKHR}), device, pInfo) -end - -function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) -end - -function vkGetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, Ptr{VkAccelerationStructureVersionInfoKHR}, Ptr{VkAccelerationStructureCompatibilityKHR}), device, pVersionInfo, pCompatibility) -end - -function vkGetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkAccelerationStructureBuildTypeKHR, Ptr{VkAccelerationStructureBuildGeometryInfoKHR}, Ptr{UInt32}, Ptr{VkAccelerationStructureBuildSizesInfoKHR}), device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo) -end - -function vkCmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, UInt32, UInt32, UInt32), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth) -end - -function vkCreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeferredOperationKHR, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) -end - -function vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) -end - -function vkCmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, Ptr{VkStridedDeviceAddressRegionKHR}, VkDeviceAddress), commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress) -end - -function vkGetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader, fun_ptr) - ccall(fun_ptr, VkDeviceSize, (VkDevice, VkPipeline, UInt32, VkShaderGroupShaderKHR), device, pipeline, group, groupShader) -end - -function vkCmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, UInt32), commandBuffer, pipelineStackSize) -end - -function vkCreateAndroidSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkAndroidSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{AHardwareBuffer}, Ptr{VkAndroidHardwareBufferPropertiesANDROID}), device, buffer, pProperties) -end - -function vkGetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryGetAndroidHardwareBufferInfoANDROID}, Ptr{Ptr{AHardwareBuffer}}), device, pInfo, pBuffer) -end - -function vkCreateImagePipeSurfaceFUCHSIA(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkImagePipeSurfaceCreateInfoFUCHSIA}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryGetZirconHandleInfoFUCHSIA}, Ptr{Cint}), device, pGetZirconHandleInfo, pZirconHandle) -end - -function vkGetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryZirconHandlePropertiesFUCHSIA}), device, handleType, zirconHandle, pMemoryZirconHandleProperties) -end - -function vkImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreZirconHandleInfoFUCHSIA}), device, pImportSemaphoreZirconHandleInfo) -end - -function vkGetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetZirconHandleInfoFUCHSIA}, Ptr{Cint}), device, pGetZirconHandleInfo, pZirconHandle) -end - -function vkCreateIOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkIOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateViSurfaceNN(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkViSurfaceCreateInfoNN}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) -end - -function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) -end - -function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) -end - -function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) -end - -function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) -end - -function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{Cint}), device, pGetWin32HandleInfo, pHandle) -end - -function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{Cint}), device, memory, handleType, pHandle) -end - -function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) -end - -function vkAcquireFullScreenExclusiveModeEXT(device, swapchain, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkReleaseFullScreenExclusiveModeEXT(device, swapchain, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) -end - -function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) -end - -function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) -end - -function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) -end - -function vkCreateDirectFBSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkDirectFBSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceDirectFBPresentationSupportEXT(physicalDevice, queueFamilyIndex, dfb, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{Cint}), physicalDevice, queueFamilyIndex, dfb) -end - -function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) -end - -function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) -end - -function vkCreateStreamDescriptorSurfaceGGP(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkStreamDescriptorSurfaceCreateInfoGGP}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkCreateScreenSurfaceQNX(instance, pCreateInfo, pAllocator, pSurface, fun_ptr) - ccall(fun_ptr, VkResult, (VkInstance, Ptr{VkScreenSurfaceCreateInfoQNX}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) -end - -function vkGetPhysicalDeviceScreenPresentationSupportQNX(physicalDevice, queueFamilyIndex, window, fun_ptr) - ccall(fun_ptr, VkBool32, (VkPhysicalDevice, UInt32, Ptr{_screen_window}), physicalDevice, queueFamilyIndex, window) -end - -function vkGetPhysicalDeviceVideoCapabilitiesKHR(physicalDevice, pVideoProfile, pCapabilities, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkVideoProfileKHR}, Ptr{VkVideoCapabilitiesKHR}), physicalDevice, pVideoProfile, pCapabilities) -end - -function vkGetPhysicalDeviceVideoFormatPropertiesKHR(physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties, fun_ptr) - ccall(fun_ptr, VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceVideoFormatInfoKHR}, Ptr{UInt32}, Ptr{VkVideoFormatPropertiesKHR}), physicalDevice, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties) -end - -function vkCreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkVideoSessionCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionKHR}), device, pCreateInfo, pAllocator, pVideoSession) -end - -function vkDestroyVideoSessionKHR(device, videoSession, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkVideoSessionKHR, Ptr{VkAllocationCallbacks}), device, videoSession, pAllocator) -end - -function vkGetVideoSessionMemoryRequirementsKHR(device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkVideoSessionKHR, Ptr{UInt32}, Ptr{VkVideoGetMemoryPropertiesKHR}), device, videoSession, pVideoSessionMemoryRequirementsCount, pVideoSessionMemoryRequirements) -end - -function vkBindVideoSessionMemoryKHR(device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkVideoSessionKHR, UInt32, Ptr{VkVideoBindMemoryKHR}), device, videoSession, videoSessionBindMemoryCount, pVideoSessionBindMemories) -end - -function vkCreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, Ptr{VkVideoSessionParametersCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkVideoSessionParametersKHR}), device, pCreateInfo, pAllocator, pVideoSessionParameters) -end - -function vkUpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo, fun_ptr) - ccall(fun_ptr, VkResult, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkVideoSessionParametersUpdateInfoKHR}), device, videoSessionParameters, pUpdateInfo) -end - -function vkDestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator, fun_ptr) - ccall(fun_ptr, Cvoid, (VkDevice, VkVideoSessionParametersKHR, Ptr{VkAllocationCallbacks}), device, videoSessionParameters, pAllocator) -end - -function vkCmdBeginVideoCodingKHR(commandBuffer, pBeginInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoBeginCodingInfoKHR}), commandBuffer, pBeginInfo) -end - -function vkCmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEndCodingInfoKHR}), commandBuffer, pEndCodingInfo) -end - -function vkCmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoCodingControlInfoKHR}), commandBuffer, pCodingControlInfo) -end - -function vkCmdDecodeVideoKHR(commandBuffer, pFrameInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoDecodeInfoKHR}), commandBuffer, pFrameInfo) -end - -function vkCmdEncodeVideoKHR(commandBuffer, pEncodeInfo, fun_ptr) - ccall(fun_ptr, Cvoid, (VkCommandBuffer, Ptr{VkVideoEncodeInfoKHR}), commandBuffer, pEncodeInfo) -end diff --git a/lib/aarch64-apple-darwin20.jl b/lib/aarch64-apple-darwin20.jl new file mode 100644 index 0000000..2916f96 --- /dev/null +++ b/lib/aarch64-apple-darwin20.jl @@ -0,0 +1,11524 @@ +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkMacOSSurfaceCreateFlagsMVK = VkFlags + +struct VkMacOSSurfaceCreateInfoMVK + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMacOSSurfaceCreateFlagsMVK + pView::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} + +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const CAMetalLayer = Cvoid + +const VkMetalSurfaceCreateFlagsEXT = VkFlags + +struct VkMetalSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMetalSurfaceCreateFlagsEXT + pLayer::Ptr{CAMetalLayer} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} + +function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_MACOS_H_ = 1 + +const VK_MVK_macos_surface = 1 + +const VK_MVK_MACOS_SURFACE_SPEC_VERSION = 3 + +const VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" + +const VULKAN_METAL_H_ = 1 + +const VK_EXT_metal_surface = 1 + +const VK_EXT_METAL_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" + diff --git a/lib/aarch64-linux-gnu.jl b/lib/aarch64-linux-gnu.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/aarch64-linux-gnu.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/aarch64-linux-musl.jl b/lib/aarch64-linux-musl.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/aarch64-linux-musl.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/armv7l-linux-gnueabihf.jl b/lib/armv7l-linux-gnueabihf.jl new file mode 100644 index 0000000..2b59a22 --- /dev/null +++ b/lib/armv7l-linux-gnueabihf.jl @@ -0,0 +1,11548 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/armv7l-linux-musleabihf.jl b/lib/armv7l-linux-musleabihf.jl new file mode 100644 index 0000000..2b59a22 --- /dev/null +++ b/lib/armv7l-linux-musleabihf.jl @@ -0,0 +1,11548 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/i686-linux-gnu.jl b/lib/i686-linux-gnu.jl new file mode 100644 index 0000000..2b59a22 --- /dev/null +++ b/lib/i686-linux-gnu.jl @@ -0,0 +1,11548 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/i686-linux-musl.jl b/lib/i686-linux-musl.jl new file mode 100644 index 0000000..2b59a22 --- /dev/null +++ b/lib/i686-linux-musl.jl @@ -0,0 +1,11548 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer = UInt64 + +const VkImage = UInt64 + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore = UInt64 + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT = UInt64 + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT = UInt64 + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/gen/vk_common.jl b/lib/i686-w64-mingw32.jl old mode 100755 new mode 100644 similarity index 50% rename from gen/vk_common.jl rename to lib/i686-w64-mingw32.jl index affa0e9..a98388a --- a/gen/vk_common.jl +++ b/lib/i686-w64-mingw32.jl @@ -1,11088 +1,11749 @@ -# Automatically generated using Clang.jl wrap_c +struct HMONITOR__ + unused::Cint +end +const HMONITOR = Ptr{HMONITOR__} -const VULKAN_H_ = 1 -const VULKAN_CORE_H_ = 1 -const VK_VERSION_1_0 = 1 +const DWORD = Culong -# Skipping MacroDefinition: VK_DEFINE_HANDLE ( object ) typedef struct object ## _T * object ; +const LPVOID = Ptr{Cvoid} -const VK_USE_64_BIT_PTR_DEFINES = 1 +const WINBOOL = Cint -# Skipping MacroDefinition: VK_NULL_HANDLE ( ( void * ) 0 ) -# Skipping MacroDefinition: VK_DEFINE_NON_DISPATCHABLE_HANDLE ( object ) typedef struct object ## _T * object ; -# Skipping MacroDefinition: VK_MAKE_VERSION ( major , minor , patch ) ( ( ( ( uint32_t ) ( major ) ) << 22 ) | ( ( ( uint32_t ) ( minor ) ) << 12 ) | ( ( uint32_t ) ( patch ) ) ) -# Skipping MacroDefinition: VK_MAKE_API_VERSION ( variant , major , minor , patch ) ( ( ( ( uint32_t ) ( variant ) ) << 29 ) | ( ( ( uint32_t ) ( major ) ) << 22 ) | ( ( ( uint32_t ) ( minor ) ) << 12 ) | ( ( uint32_t ) ( patch ) ) ) -# Skipping MacroDefinition: VK_API_VERSION_1_0 VK_MAKE_API_VERSION ( 0 , 1 , 0 , 0 ) +struct _SECURITY_ATTRIBUTES + nLength::DWORD + lpSecurityDescriptor::LPVOID + bInheritHandle::WINBOOL +end -const VK_HEADER_VERSION = 177 +const SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES -# Skipping MacroDefinition: VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION ( 0 , 1 , 2 , VK_HEADER_VERSION ) -# Skipping MacroDefinition: VK_VERSION_MAJOR ( version ) ( ( uint32_t ) ( version ) >> 22 ) -# Skipping MacroDefinition: VK_VERSION_MINOR ( version ) ( ( ( uint32_t ) ( version ) >> 12 ) & 0x3FFU ) -# Skipping MacroDefinition: VK_VERSION_PATCH ( version ) ( ( uint32_t ) ( version ) & 0xFFFU ) -# Skipping MacroDefinition: VK_API_VERSION_VARIANT ( version ) ( ( uint32_t ) ( version ) >> 29 ) -# Skipping MacroDefinition: VK_API_VERSION_MAJOR ( version ) ( ( ( uint32_t ) ( version ) >> 22 ) & 0x7FU ) -# Skipping MacroDefinition: VK_API_VERSION_MINOR ( version ) ( ( ( uint32_t ) ( version ) >> 12 ) & 0x3FFU ) -# Skipping MacroDefinition: VK_API_VERSION_PATCH ( version ) ( ( uint32_t ) ( version ) & 0xFFFU ) +const WCHAR = Cwchar_t -const VK_ATTACHMENT_UNUSED = ~(UInt32(0)) -const VK_FALSE = UInt32(0) -const VK_LOD_CLAMP_NONE = Float32(1000.0) -const VK_QUEUE_FAMILY_IGNORED = ~(UInt32(0)) -const VK_REMAINING_ARRAY_LAYERS = ~(UInt32(0)) -const VK_REMAINING_MIP_LEVELS = ~(UInt32(0)) -const VK_SUBPASS_EXTERNAL = ~(UInt32(0)) -const VK_TRUE = UInt32(1) -const VK_WHOLE_SIZE = ~(UInt64(0)) -const VK_MAX_MEMORY_TYPES = UInt32(32) -const VK_MAX_MEMORY_HEAPS = UInt32(16) -const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = UInt32(256) -const VK_UUID_SIZE = UInt32(16) -const VK_MAX_EXTENSION_NAME_SIZE = UInt32(256) -const VK_MAX_DESCRIPTION_SIZE = UInt32(256) -const VK_VERSION_1_1 = 1 +const LPCWSTR = Ptr{WCHAR} -# Skipping MacroDefinition: VK_API_VERSION_1_1 VK_MAKE_API_VERSION ( 0 , 1 , 1 , 0 ) +const HANDLE = Ptr{Cvoid} -const VK_MAX_DEVICE_GROUP_SIZE = UInt32(32) -const VK_LUID_SIZE = UInt32(8) -const VK_QUEUE_FAMILY_EXTERNAL = ~(UInt32(1)) -const VK_VERSION_1_2 = 1 +struct HWND__ + unused::Cint +end -# Skipping MacroDefinition: VK_API_VERSION_1_2 VK_MAKE_API_VERSION ( 0 , 1 , 2 , 0 ) +const HWND = Ptr{HWND__} + +struct HINSTANCE__ + unused::Cint +end + +const HINSTANCE = Ptr{HINSTANCE__} -const VK_MAX_DRIVER_NAME_SIZE = UInt32(256) -const VK_MAX_DRIVER_INFO_SIZE = UInt32(256) -const VK_KHR_surface = 1 -const VK_KHR_SURFACE_SPEC_VERSION = 25 -const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" -const VK_KHR_swapchain = 1 -const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 -const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" -const VK_KHR_display = 1 -const VK_KHR_DISPLAY_SPEC_VERSION = 23 -const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" -const VK_KHR_display_swapchain = 1 -const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 -const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" -const VK_KHR_sampler_mirror_clamp_to_edge = 1 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 -const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" -const VK_KHR_multiview = 1 -const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 -const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" -const VK_KHR_get_physical_device_properties2 = 1 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 -const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" -const VK_KHR_device_group = 1 -const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 -const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" -const VK_KHR_shader_draw_parameters = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 -const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" -const VK_KHR_maintenance1 = 1 -const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 -const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" -const VK_KHR_device_group_creation = 1 -const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 -const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" -const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE -const VK_KHR_external_memory_capabilities = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" -const VK_LUID_SIZE_KHR = VK_LUID_SIZE -const VK_KHR_external_memory = 1 -const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" -const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL -const VK_KHR_external_memory_fd = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" -const VK_KHR_external_semaphore_capabilities = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" -const VK_KHR_external_semaphore = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" -const VK_KHR_external_semaphore_fd = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" -const VK_KHR_push_descriptor = 1 -const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 -const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" -const VK_KHR_shader_float16_int8 = 1 -const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 -const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" -const VK_KHR_16bit_storage = 1 -const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -const VK_KHR_incremental_present = 1 -const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 2 -const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -const VK_KHR_descriptor_update_template = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -const VK_KHR_imageless_framebuffer = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -const VK_KHR_create_renderpass2 = 1 -const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -const VK_KHR_shared_presentable_image = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -const VK_KHR_external_fence_capabilities = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VK_KHR_external_fence = 1 -const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -const VK_KHR_external_fence_fd = 1 -const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -const VK_KHR_performance_query = 1 -const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -const VK_KHR_maintenance2 = 1 -const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" -const VK_KHR_get_surface_capabilities2 = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -const VK_KHR_variable_pointers = 1 -const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -const VK_KHR_get_display_properties2 = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -const VK_KHR_dedicated_allocation = 1 -const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const VK_KHR_storage_buffer_storage_class = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -const VK_KHR_relaxed_block_layout = 1 -const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const VK_KHR_get_memory_requirements2 = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -const VK_KHR_image_format_list = 1 -const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -const VK_KHR_sampler_ycbcr_conversion = 1 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -const VK_KHR_bind_memory2 = 1 -const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VK_KHR_maintenance3 = 1 -const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 -const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" -const VK_KHR_draw_indirect_count = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -const VK_KHR_shader_subgroup_extended_types = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -const VK_KHR_8bit_storage = 1 -const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -const VK_KHR_shader_atomic_int64 = 1 -const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const VK_KHR_shader_clock = 1 -const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -const VK_KHR_driver_properties = 1 -const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -const VK_KHR_shader_float_controls = 1 -const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -const VK_KHR_depth_stencil_resolve = 1 -const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -const VK_KHR_swapchain_mutable_format = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -const VK_KHR_timeline_semaphore = 1 -const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const VK_KHR_vulkan_memory_model = 1 -const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -const VK_KHR_shader_terminate_invocation = 1 -const VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1 -const VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME = "VK_KHR_shader_terminate_invocation" -const VK_KHR_fragment_shading_rate = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION = 1 -const VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME = "VK_KHR_fragment_shading_rate" -const VK_KHR_spirv_1_4 = 1 -const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -const VK_KHR_surface_protected_capabilities = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -const VK_KHR_separate_depth_stencil_layouts = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -const VK_KHR_uniform_buffer_standard_layout = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -const VK_KHR_buffer_device_address = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const VK_KHR_deferred_host_operations = 1 -const VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION = 4 -const VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME = "VK_KHR_deferred_host_operations" -const VK_KHR_pipeline_executable_properties = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -const VK_KHR_pipeline_library = 1 -const VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION = 1 -const VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME = "VK_KHR_pipeline_library" -const VK_KHR_shader_non_semantic_info = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -const VK_KHR_synchronization2 = 1 -const VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1 -const VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME = "VK_KHR_synchronization2" -const VK_KHR_zero_initialize_workgroup_memory = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1 -const VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME = "VK_KHR_zero_initialize_workgroup_memory" -const VK_KHR_workgroup_memory_explicit_layout = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION = 1 -const VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME = "VK_KHR_workgroup_memory_explicit_layout" -const VK_KHR_copy_commands2 = 1 -const VK_KHR_COPY_COMMANDS_2_SPEC_VERSION = 1 -const VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME = "VK_KHR_copy_commands2" -const VK_EXT_debug_report = 1 -const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 10 -const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" -const VK_NV_glsl_shader = 1 -const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 -const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" -const VK_EXT_depth_range_unrestricted = 1 -const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 -const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" -const VK_IMG_filter_cubic = 1 -const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 -const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" -const VK_AMD_rasterization_order = 1 -const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 -const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" -const VK_AMD_shader_trinary_minmax = 1 -const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 -const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" -const VK_AMD_shader_explicit_vertex_parameter = 1 -const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 -const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" -const VK_EXT_debug_marker = 1 -const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 -const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" -const VK_AMD_gcn_shader = 1 -const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 -const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" -const VK_NV_dedicated_allocation = 1 -const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 -const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" -const VK_EXT_transform_feedback = 1 -const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 -const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" -const VK_NVX_image_view_handle = 1 -const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 -const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" -const VK_AMD_draw_indirect_count = 1 -const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 -const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" -const VK_AMD_negative_viewport_height = 1 -const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 -const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" -const VK_AMD_gpu_shader_half_float = 1 -const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 -const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" -const VK_AMD_shader_ballot = 1 -const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 -const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" -const VK_AMD_texture_gather_bias_lod = 1 -const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 -const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" -const VK_AMD_shader_info = 1 -const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 -const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" -const VK_AMD_shader_image_load_store_lod = 1 -const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 -const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" -const VK_NV_corner_sampled_image = 1 -const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 -const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" -const VK_IMG_format_pvrtc = 1 -const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 -const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" -const VK_NV_external_memory_capabilities = 1 -const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" -const VK_NV_external_memory = 1 -const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 -const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" -const VK_EXT_validation_flags = 1 -const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 -const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" -const VK_EXT_shader_subgroup_ballot = 1 -const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 -const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" -const VK_EXT_shader_subgroup_vote = 1 -const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 -const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" -const VK_EXT_texture_compression_astc_hdr = 1 -const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 -const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" -const VK_EXT_astc_decode_mode = 1 -const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 -const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" -const VK_EXT_conditional_rendering = 1 -const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 -const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" -const VK_NV_clip_space_w_scaling = 1 -const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 -const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" -const VK_EXT_direct_mode_display = 1 -const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 -const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" -const VK_EXT_display_surface_counter = 1 -const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 -const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" -const VK_EXT_display_control = 1 -const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 -const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" -const VK_GOOGLE_display_timing = 1 -const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 -const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" -const VK_NV_sample_mask_override_coverage = 1 -const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 -const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" -const VK_NV_geometry_shader_passthrough = 1 -const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 -const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" -const VK_NV_viewport_array2 = 1 -const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 -const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" -const VK_NVX_multiview_per_view_attributes = 1 -const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 -const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" -const VK_NV_viewport_swizzle = 1 -const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 -const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" -const VK_EXT_discard_rectangles = 1 -const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 -const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" -const VK_EXT_conservative_rasterization = 1 -const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 -const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" -const VK_EXT_depth_clip_enable = 1 -const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 -const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" -const VK_EXT_swapchain_colorspace = 1 -const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 -const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" -const VK_EXT_hdr_metadata = 1 -const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 -const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" -const VK_EXT_external_memory_dma_buf = 1 -const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 -const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" -const VK_EXT_queue_family_foreign = 1 -const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 -const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" -const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(UInt32(2)) -const VK_EXT_debug_utils = 1 -const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 -const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" -const VK_EXT_sampler_filter_minmax = 1 -const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 -const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" -const VK_AMD_gpu_shader_int16 = 1 -const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 -const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" -const VK_AMD_mixed_attachment_samples = 1 -const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 -const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" -const VK_AMD_shader_fragment_mask = 1 -const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 -const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" -const VK_EXT_inline_uniform_block = 1 -const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 -const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" -const VK_EXT_shader_stencil_export = 1 -const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 -const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" -const VK_EXT_sample_locations = 1 -const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 -const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" -const VK_EXT_blend_operation_advanced = 1 -const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 -const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" -const VK_NV_fragment_coverage_to_color = 1 -const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 -const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" -const VK_NV_framebuffer_mixed_samples = 1 -const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 -const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" -const VK_NV_fill_rectangle = 1 -const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 -const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" -const VK_NV_shader_sm_builtins = 1 -const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 -const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" -const VK_EXT_post_depth_coverage = 1 -const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 -const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" -const VK_EXT_image_drm_format_modifier = 1 -const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 -const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" -const VK_EXT_validation_cache = 1 -const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 -const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" -const VK_EXT_descriptor_indexing = 1 -const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 -const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" -const VK_EXT_shader_viewport_index_layer = 1 -const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 -const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" -const VK_NV_shading_rate_image = 1 -const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 -const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" -const VK_NV_ray_tracing = 1 -const VK_NV_RAY_TRACING_SPEC_VERSION = 3 -const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" -const VK_SHADER_UNUSED_KHR = ~(UInt32(0)) -const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR -const VK_NV_representative_fragment_test = 1 -const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 -const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" -const VK_EXT_filter_cubic = 1 -const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 -const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" -const VK_QCOM_render_pass_shader_resolve = 1 -const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 -const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" -const VK_EXT_global_priority = 1 -const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 -const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" -const VK_EXT_external_memory_host = 1 -const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 -const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" -const VK_AMD_buffer_marker = 1 -const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 -const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" -const VK_AMD_pipeline_compiler_control = 1 -const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 -const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" -const VK_EXT_calibrated_timestamps = 1 -const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 2 -const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" -const VK_AMD_shader_core_properties = 1 -const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 -const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" -const VK_AMD_memory_overallocation_behavior = 1 -const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 -const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" -const VK_EXT_vertex_attribute_divisor = 1 -const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 -const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" -const VK_EXT_pipeline_creation_feedback = 1 -const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 -const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" -const VK_NV_shader_subgroup_partitioned = 1 -const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 -const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" -const VK_NV_compute_shader_derivatives = 1 -const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" -const VK_NV_mesh_shader = 1 -const VK_NV_MESH_SHADER_SPEC_VERSION = 1 -const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" -const VK_NV_fragment_shader_barycentric = 1 -const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" -const VK_NV_shader_image_footprint = 1 -const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 -const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" -const VK_NV_scissor_exclusive = 1 -const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 -const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" -const VK_NV_device_diagnostic_checkpoints = 1 -const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 -const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" -const VK_INTEL_shader_integer_functions2 = 1 -const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 -const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" -const VK_INTEL_performance_query = 1 -const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 -const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" -const VK_EXT_pci_bus_info = 1 -const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 -const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" -const VK_AMD_display_native_hdr = 1 -const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 -const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" -const VK_EXT_fragment_density_map = 1 -const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 -const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" -const VK_EXT_scalar_block_layout = 1 -const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 -const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" -const VK_GOOGLE_hlsl_functionality1 = 1 -const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 -const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" -const VK_GOOGLE_decorate_string = 1 -const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 -const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" -const VK_EXT_subgroup_size_control = 1 -const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 -const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" -const VK_AMD_shader_core_properties2 = 1 -const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 -const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" -const VK_AMD_device_coherent_memory = 1 -const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 -const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" -const VK_EXT_shader_image_atomic_int64 = 1 -const VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION = 1 -const VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME = "VK_EXT_shader_image_atomic_int64" -const VK_EXT_memory_budget = 1 -const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 -const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" -const VK_EXT_memory_priority = 1 -const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 -const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" -const VK_NV_dedicated_allocation_image_aliasing = 1 -const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 -const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" -const VK_EXT_buffer_device_address = 1 -const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 -const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" -const VK_EXT_tooling_info = 1 -const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 -const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" -const VK_EXT_separate_stencil_usage = 1 -const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 -const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" -const VK_EXT_validation_features = 1 -const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 -const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" -const VK_NV_cooperative_matrix = 1 -const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 -const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" -const VK_NV_coverage_reduction_mode = 1 -const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 -const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" -const VK_EXT_fragment_shader_interlock = 1 -const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 -const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" -const VK_EXT_ycbcr_image_arrays = 1 -const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 -const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" -const VK_EXT_provoking_vertex = 1 -const VK_EXT_PROVOKING_VERTEX_SPEC_VERSION = 1 -const VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME = "VK_EXT_provoking_vertex" -const VK_EXT_headless_surface = 1 -const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 -const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" -const VK_EXT_line_rasterization = 1 -const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" -const VK_EXT_shader_atomic_float = 1 -const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 -const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" -const VK_EXT_host_query_reset = 1 -const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 -const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" -const VK_EXT_index_type_uint8 = 1 -const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" -const VK_EXT_extended_dynamic_state = 1 -const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 -const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" -const VK_EXT_shader_demote_to_helper_invocation = 1 -const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 -const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" -const VK_NV_device_generated_commands = 1 -const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 -const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" -const VK_NV_inherited_viewport_scissor = 1 -const VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION = 1 -const VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME = "VK_NV_inherited_viewport_scissor" -const VK_EXT_texel_buffer_alignment = 1 -const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 -const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" -const VK_QCOM_render_pass_transform = 1 -const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 2 -const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" -const VK_EXT_device_memory_report = 1 -const VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION = 2 -const VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME = "VK_EXT_device_memory_report" -const VK_EXT_robustness2 = 1 -const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 -const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" -const VK_EXT_custom_border_color = 1 -const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 -const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" -const VK_GOOGLE_user_type = 1 -const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 -const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" -const VK_EXT_private_data = 1 -const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 -const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" -const VK_EXT_pipeline_creation_cache_control = 1 -const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 -const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" -const VK_NV_device_diagnostics_config = 1 -const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 -const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" -const VK_QCOM_render_pass_store_ops = 1 -const VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION = 2 -const VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" -const VK_NV_fragment_shading_rate_enums = 1 -const VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION = 1 -const VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME = "VK_NV_fragment_shading_rate_enums" -const VK_EXT_ycbcr_2plane_444_formats = 1 -const VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION = 1 -const VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME = "VK_EXT_ycbcr_2plane_444_formats" -const VK_EXT_fragment_density_map2 = 1 -const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 -const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" -const VK_QCOM_rotated_copy_commands = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION = 1 -const VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME = "VK_QCOM_rotated_copy_commands" -const VK_EXT_image_robustness = 1 -const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 -const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" -const VK_EXT_4444_formats = 1 -const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 -const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" -const VK_NV_acquire_winrt_display = 1 -const VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION = 1 -const VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME = "VK_NV_acquire_winrt_display" -const VK_VALVE_mutable_descriptor_type = 1 -const VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION = 1 -const VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME = "VK_VALVE_mutable_descriptor_type" -const VK_EXT_vertex_input_dynamic_state = 1 -const VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION = 2 -const VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_vertex_input_dynamic_state" -const VK_EXT_extended_dynamic_state2 = 1 -const VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION = 1 -const VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME = "VK_EXT_extended_dynamic_state2" -const VK_EXT_color_write_enable = 1 -const VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION = 1 -const VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME = "VK_EXT_color_write_enable" -const VK_KHR_acceleration_structure = 1 -const VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 11 -const VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME = "VK_KHR_acceleration_structure" -const VK_KHR_ray_tracing_pipeline = 1 -const VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION = 1 -const VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME = "VK_KHR_ray_tracing_pipeline" -const VK_KHR_ray_query = 1 -const VK_KHR_RAY_QUERY_SPEC_VERSION = 1 -const VK_KHR_RAY_QUERY_EXTENSION_NAME = "VK_KHR_ray_query" -const VULKAN_ANDROID_H_ = 1 -const VK_KHR_android_surface = 1 -const VK_KHR_ANDROID_SURFACE_SPEC_VERSION = 6 -const VK_KHR_ANDROID_SURFACE_EXTENSION_NAME = "VK_KHR_android_surface" -const VK_ANDROID_external_memory_android_hardware_buffer = 1 -const VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION = 3 -const VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME = "VK_ANDROID_external_memory_android_hardware_buffer" -const VULKAN_FUCHSIA_H_ = 1 -const VK_FUCHSIA_imagepipe_surface = 1 -const VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION = 1 -const VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME = "VK_FUCHSIA_imagepipe_surface" -const VK_FUCHSIA_external_memory = 1 -const VK_FUCHSIA_EXTERNAL_MEMORY_SPEC_VERSION = 1 -const VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_FUCHSIA_external_memory" -const VK_FUCHSIA_external_semaphore = 1 -const VK_FUCHSIA_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 -const VK_FUCHSIA_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_FUCHSIA_external_semaphore" -const VULKAN_IOS_H_ = 1 -const VK_MVK_ios_surface = 1 -const VK_MVK_IOS_SURFACE_SPEC_VERSION = 3 -const VK_MVK_IOS_SURFACE_EXTENSION_NAME = "VK_MVK_ios_surface" -const VULKAN_MACOS_H_ = 1 -const VK_MVK_macos_surface = 1 -const VK_MVK_MACOS_SURFACE_SPEC_VERSION = 3 -const VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" -const VULKAN_METAL_H_ = 1 -const VK_EXT_metal_surface = 1 -const VK_EXT_METAL_SURFACE_SPEC_VERSION = 1 -const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" -const VULKAN_VI_H_ = 1 -const VK_NN_vi_surface = 1 -const VK_NN_VI_SURFACE_SPEC_VERSION = 1 -const VK_NN_VI_SURFACE_EXTENSION_NAME = "VK_NN_vi_surface" -const VULKAN_WAYLAND_H_ = 1 -const VK_KHR_wayland_surface = 1 -const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 -const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" -const VULKAN_WIN32_H_ = 1 -const VK_KHR_win32_surface = 1 -const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6 -const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" -const VK_KHR_external_memory_win32 = 1 -const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" -const VK_KHR_win32_keyed_mutex = 1 -const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1 -const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex" -const VK_KHR_external_semaphore_win32 = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" -const VK_KHR_external_fence_win32 = 1 -const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1 -const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" -const VK_NV_external_memory_win32 = 1 -const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 -const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" -const VK_NV_win32_keyed_mutex = 1 -const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2 -const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex" -const VK_EXT_full_screen_exclusive = 1 -const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4 -const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive" -const VULKAN_XCB_H_ = 1 -const VK_KHR_xcb_surface = 1 -const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 -const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" -const VULKAN_XLIB_H_ = 1 -const VK_KHR_xlib_surface = 1 -const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 -const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" -const VULKAN_DIRECTFB_H_ = 1 -const VK_EXT_directfb_surface = 1 -const VK_EXT_DIRECTFB_SURFACE_SPEC_VERSION = 1 -const VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME = "VK_EXT_directfb_surface" -const VULKAN_XLIB_XRANDR_H_ = 1 -const VK_EXT_acquire_xlib_display = 1 -const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 -const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" -const VULKAN_GGP_H_ = 1 -const VK_GGP_stream_descriptor_surface = 1 -const VK_GGP_STREAM_DESCRIPTOR_SURFACE_SPEC_VERSION = 1 -const VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME = "VK_GGP_stream_descriptor_surface" -const VK_GGP_frame_token = 1 -const VK_GGP_FRAME_TOKEN_SPEC_VERSION = 1 -const VK_GGP_FRAME_TOKEN_EXTENSION_NAME = "VK_GGP_frame_token" -const VULKAN_SCREEN_H_ = 1 -const VK_QNX_screen_surface = 1 -const VK_QNX_SCREEN_SURFACE_SPEC_VERSION = 1 -const VK_QNX_SCREEN_SURFACE_EXTENSION_NAME = "VK_QNX_screen_surface" -const VULKAN_BETA_H_ = 1 -const VK_KHR_video_queue = 1 -const VK_KHR_VIDEO_QUEUE_SPEC_VERSION = 1 -const VK_KHR_VIDEO_QUEUE_EXTENSION_NAME = "VK_KHR_video_queue" -const VK_KHR_video_decode_queue = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION = 1 -const VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_decode_queue" -const VK_KHR_portability_subset = 1 -const VK_KHR_PORTABILITY_SUBSET_SPEC_VERSION = 1 -const VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME = "VK_KHR_portability_subset" -const VK_KHR_video_encode_queue = 1 -const VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION = 2 -const VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME = "VK_KHR_video_encode_queue" -const VK_EXT_video_encode_h264 = 1 -const VULKAN_VIDEO_CODEC_H264STD_H_ = 1 -const VULKAN_VIDEO_CODEC_COMMON_H_ = 1 - -# Skipping MacroDefinition: VK_MAKE_VIDEO_STD_VERSION ( major , minor , patch ) ( ( ( ( uint32_t ) ( major ) ) << 22 ) | ( ( ( uint32_t ) ( minor ) ) << 12 ) | ( ( uint32_t ) ( patch ) ) ) -# Skipping MacroDefinition: VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 VK_MAKE_VIDEO_STD_VERSION ( 0 , 9 , 0 ) - -const VK_STD_VULKAN_VIDEO_CODEC_H264_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 -const VK_STD_VULKAN_VIDEO_CODEC_H264_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h264" -const VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ = 1 -const VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION = 1 -const VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME = "VK_EXT_video_encode_h264" -const VK_EXT_video_decode_h264 = 1 -const VULKAN_VIDEO_CODEC_H264STD_DECODE_H_ = 1 -const VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION = 1 -const VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME = "VK_EXT_video_decode_h264" -const VK_EXT_video_decode_h265 = 1 -const VULKAN_VIDEO_CODEC_H265STD_H_ = 1 - -# Skipping MacroDefinition: VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 VK_MAKE_VIDEO_STD_VERSION ( 0 , 5 , 0 ) - -const VK_STD_VULKAN_VIDEO_CODEC_H265_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 -const VK_STD_VULKAN_VIDEO_CODEC_H265_EXTENSION_NAME = "VK_STD_vulkan_video_codec_h265" -const VULKAN_VIDEO_CODEC_H265STD_DECODE_H_ = 1 -const VK_EXT_VIDEO_DECODE_H265_SPEC_VERSION = 1 -const VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME = "VK_EXT_video_decode_h265" const VkBool32 = UInt32 + const VkDeviceAddress = UInt64 + const VkDeviceSize = UInt64 + const VkFlags = UInt32 + const VkSampleMask = UInt32 -const VkBuffer_T = Cvoid -const VkBuffer = Ptr{VkBuffer_T} -const VkImage_T = Cvoid -const VkImage = Ptr{VkImage_T} + +const VkBuffer = UInt64 + +const VkImage = UInt64 + const VkInstance_T = Cvoid + const VkInstance = Ptr{VkInstance_T} + const VkPhysicalDevice_T = Cvoid + const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + const VkDevice_T = Cvoid + const VkDevice = Ptr{VkDevice_T} + const VkQueue_T = Cvoid + const VkQueue = Ptr{VkQueue_T} -const VkSemaphore_T = Cvoid -const VkSemaphore = Ptr{VkSemaphore_T} + +const VkSemaphore = UInt64 + const VkCommandBuffer_T = Cvoid + const VkCommandBuffer = Ptr{VkCommandBuffer_T} -const VkFence_T = Cvoid -const VkFence = Ptr{VkFence_T} -const VkDeviceMemory_T = Cvoid -const VkDeviceMemory = Ptr{VkDeviceMemory_T} -const VkEvent_T = Cvoid -const VkEvent = Ptr{VkEvent_T} -const VkQueryPool_T = Cvoid -const VkQueryPool = Ptr{VkQueryPool_T} -const VkBufferView_T = Cvoid -const VkBufferView = Ptr{VkBufferView_T} -const VkImageView_T = Cvoid -const VkImageView = Ptr{VkImageView_T} -const VkShaderModule_T = Cvoid -const VkShaderModule = Ptr{VkShaderModule_T} -const VkPipelineCache_T = Cvoid -const VkPipelineCache = Ptr{VkPipelineCache_T} -const VkPipelineLayout_T = Cvoid -const VkPipelineLayout = Ptr{VkPipelineLayout_T} -const VkPipeline_T = Cvoid -const VkPipeline = Ptr{VkPipeline_T} -const VkRenderPass_T = Cvoid -const VkRenderPass = Ptr{VkRenderPass_T} -const VkDescriptorSetLayout_T = Cvoid -const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} -const VkSampler_T = Cvoid -const VkSampler = Ptr{VkSampler_T} -const VkDescriptorSet_T = Cvoid -const VkDescriptorSet = Ptr{VkDescriptorSet_T} -const VkDescriptorPool_T = Cvoid -const VkDescriptorPool = Ptr{VkDescriptorPool_T} -const VkFramebuffer_T = Cvoid -const VkFramebuffer = Ptr{VkFramebuffer_T} -const VkCommandPool_T = Cvoid -const VkCommandPool = Ptr{VkCommandPool_T} - -@cenum(VkResult{Int32}, - VK_SUCCESS = 0, - VK_NOT_READY = 1, - VK_TIMEOUT = 2, - VK_EVENT_SET = 3, - VK_EVENT_RESET = 4, - VK_INCOMPLETE = 5, - VK_ERROR_OUT_OF_HOST_MEMORY = -1, - VK_ERROR_OUT_OF_DEVICE_MEMORY = -2, - VK_ERROR_INITIALIZATION_FAILED = -3, - VK_ERROR_DEVICE_LOST = -4, - VK_ERROR_MEMORY_MAP_FAILED = -5, - VK_ERROR_LAYER_NOT_PRESENT = -6, - VK_ERROR_EXTENSION_NOT_PRESENT = -7, - VK_ERROR_FEATURE_NOT_PRESENT = -8, - VK_ERROR_INCOMPATIBLE_DRIVER = -9, - VK_ERROR_TOO_MANY_OBJECTS = -10, - VK_ERROR_FORMAT_NOT_SUPPORTED = -11, - VK_ERROR_FRAGMENTED_POOL = -12, - VK_ERROR_UNKNOWN = -13, - VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000, - VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, - VK_ERROR_FRAGMENTATION = -1000161000, - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, - VK_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_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, - VK_ERROR_NOT_PERMITTED_EXT = -1000174001, - VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, - VK_THREAD_IDLE_KHR = 1000268000, - VK_THREAD_DONE_KHR = 1000268001, - VK_OPERATION_DEFERRED_KHR = 1000268002, - VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, - VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000, - VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000, - VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003, - VK_ERROR_FRAGMENTATION_EXT = -1000161000, - VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000, - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000, - VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000, - VK_RESULT_MAX_ENUM = 2147483647, -) -@cenum(VkStructureType, - VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, - VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, - VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, - VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5, - VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, - VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, - VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, - VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, - VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, - VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, - VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, - VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, - VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, - VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, - VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, - VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, - VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, - VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, - VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, - VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, - VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, - VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, - VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, - VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, - VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, - VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, - VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, - VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005, - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, - VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001, - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002, - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004, - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001, - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, - VK_STRUCTURE_TYPE_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_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_VIDEO_PROFILE_KHR = 1000023000, - VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001, - VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR = 1000023002, - VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR = 1000023003, - VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR = 1000023004, - VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005, - VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006, - VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007, - VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008, - VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009, - VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010, - VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR = 1000023011, - VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000023012, - VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR = 1000023013, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014, - VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015, - VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001, - 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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, - VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT = 1000038000, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT = 1000038001, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000038002, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000038003, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT = 1000038004, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT = 1000038005, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT = 1000038006, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT = 1000038007, - VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT = 1000038008, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT = 1000040000, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT = 1000040001, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT = 1000040002, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT = 1000040003, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT = 1000040004, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000040005, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT = 1000040006, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT = 1000040007, - VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, - VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, - 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, - 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, - VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, - VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000, - 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, - 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, - VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, - VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005, - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, - 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_DISPLAY_PROPERTIES_2_KHR = 1000121000, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001, - VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004, - 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003, - 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_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_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, - VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, - VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, - VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, - VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001, - VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003, - VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004, - VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005, - VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009, - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000, - VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000, - VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001, - 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_CLOCK_FEATURES_KHR = 1000181000, - VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, - VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT = 1000187000, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT = 1000187001, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT = 1000187002, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT = 1000187003, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT = 1000187004, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT = 1000187005, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT = 1000187006, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, - 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, - VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000, - VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002, - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, - VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, - VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002, - VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, - VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, - VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, - VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, - VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, - VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000, - VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, - VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002, - VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, - VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, - VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000, - VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, - VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002, - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, - VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, - VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, - VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005, - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, - VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, - VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, - VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, - VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000, - VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001, - VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, - VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, - VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = 1000314000, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = 1000314001, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = 1000314002, - VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = 1000314003, - VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = 1000314004, - VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = 1000314005, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = 1000314006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = 1000314007, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = 1000325000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, - VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, - VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000, - VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001, - VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = 1000337002, - VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = 1000337003, - VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = 1000337004, - VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = 1000337005, - VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = 1000337006, - VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = 1000337007, - VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = 1000337008, - VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = 1000337009, - VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = 1000337010, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, - VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000, - VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000, - VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001, - VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000, - VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001, - VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, - VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000, - VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000, - 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000, - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002, - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006, - 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_POINTERS_FEATURES_KHR = 1000120000, - 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001, - 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000, - 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_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_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001, - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002, - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003, - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004, - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005, - VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001, - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001, - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002, - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000, - VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkImageLayout, - VK_IMAGE_LAYOUT_UNDEFINED = 0, - VK_IMAGE_LAYOUT_GENERAL = 1, - VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3, - VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4, - VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7, - VK_IMAGE_LAYOUT_PREINITIALIZED = 8, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001, - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002, - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003, - VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, - VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000, - VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001, - VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002, - VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000, - VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001, - VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002, - VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, - VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003, - VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, - VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = 1000314000, - VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001, - 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_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003, - VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000, - VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001, - VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002, - VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003, - VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647, -) -@cenum(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_VIDEO_SESSION_KHR = 1000023000, - VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001, - VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, - VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, - VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000, - VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, - VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000, - VK_OBJECT_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkVendorId, - VK_VENDOR_ID_VIV = 65537, - VK_VENDOR_ID_VSI = 65538, - VK_VENDOR_ID_KAZAN = 65539, - VK_VENDOR_ID_CODEPLAY = 65540, - VK_VENDOR_ID_MESA = 65541, - VK_VENDOR_ID_POCL = 65542, - VK_VENDOR_ID_MAX_ENUM = 2147483647, -) -@cenum(VkPipelineCacheHeaderVersion, - VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, - VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647, -) -@cenum(VkSystemAllocationScope, - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0, - VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1, - VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2, - VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3, - VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4, - VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647, -) -@cenum(VkInternalAllocationType, - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0, - VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647, -) -@cenum(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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000, - VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001, - VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002, - VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003, - VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004, - VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005, - VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006, - VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007, - VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008, - VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009, - VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010, - VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011, - VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012, - VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013, - VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = 1000330000, - VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = 1000330001, - VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = 1000330002, - VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = 1000330003, - VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000, - VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001, - 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_MAX_ENUM = 2147483647, -) -@cenum(VkImageTiling, - VK_IMAGE_TILING_OPTIMAL = 0, - VK_IMAGE_TILING_LINEAR = 1, - VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000, - VK_IMAGE_TILING_MAX_ENUM = 2147483647, -) -@cenum(VkImageType, - VK_IMAGE_TYPE_1D = 0, - VK_IMAGE_TYPE_2D = 1, - VK_IMAGE_TYPE_3D = 2, - VK_IMAGE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkPhysicalDeviceType, - VK_PHYSICAL_DEVICE_TYPE_OTHER = 0, - VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1, - VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2, - VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3, - VK_PHYSICAL_DEVICE_TYPE_CPU = 4, - VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkQueryType, - VK_QUERY_TYPE_OCCLUSION = 0, - VK_QUERY_TYPE_PIPELINE_STATISTICS = 1, - VK_QUERY_TYPE_TIMESTAMP = 2, - VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000, - VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR = 1000299000, - VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, - VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, - VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, - VK_QUERY_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkSharingMode, - VK_SHARING_MODE_EXCLUSIVE = 0, - VK_SHARING_MODE_CONCURRENT = 1, - VK_SHARING_MODE_MAX_ENUM = 2147483647, -) -@cenum(VkComponentSwizzle, - VK_COMPONENT_SWIZZLE_IDENTITY = 0, - VK_COMPONENT_SWIZZLE_ZERO = 1, - VK_COMPONENT_SWIZZLE_ONE = 2, - VK_COMPONENT_SWIZZLE_R = 3, - VK_COMPONENT_SWIZZLE_G = 4, - VK_COMPONENT_SWIZZLE_B = 5, - VK_COMPONENT_SWIZZLE_A = 6, - VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647, -) -@cenum(VkImageViewType, - VK_IMAGE_VIEW_TYPE_1D = 0, - VK_IMAGE_VIEW_TYPE_2D = 1, - VK_IMAGE_VIEW_TYPE_3D = 2, - VK_IMAGE_VIEW_TYPE_CUBE = 3, - VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4, - VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5, - VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6, - VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkBlendFactor, - VK_BLEND_FACTOR_ZERO = 0, - VK_BLEND_FACTOR_ONE = 1, - VK_BLEND_FACTOR_SRC_COLOR = 2, - VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3, - VK_BLEND_FACTOR_DST_COLOR = 4, - VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5, - VK_BLEND_FACTOR_SRC_ALPHA = 6, - VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7, - VK_BLEND_FACTOR_DST_ALPHA = 8, - VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9, - VK_BLEND_FACTOR_CONSTANT_COLOR = 10, - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11, - VK_BLEND_FACTOR_CONSTANT_ALPHA = 12, - VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13, - VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14, - VK_BLEND_FACTOR_SRC1_COLOR = 15, - VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16, - VK_BLEND_FACTOR_SRC1_ALPHA = 17, - VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18, - VK_BLEND_FACTOR_MAX_ENUM = 2147483647, -) -@cenum(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_MAX_ENUM = 2147483647, -) -@cenum(VkCompareOp, - VK_COMPARE_OP_NEVER = 0, - VK_COMPARE_OP_LESS = 1, - VK_COMPARE_OP_EQUAL = 2, - VK_COMPARE_OP_LESS_OR_EQUAL = 3, - VK_COMPARE_OP_GREATER = 4, - VK_COMPARE_OP_NOT_EQUAL = 5, - VK_COMPARE_OP_GREATER_OR_EQUAL = 6, - VK_COMPARE_OP_ALWAYS = 7, - VK_COMPARE_OP_MAX_ENUM = 2147483647, -) -@cenum(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_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, - VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, - VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, - VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, - VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, - VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000, - VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000, - VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001, - VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002, - VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003, - VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004, - VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005, - VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006, - VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007, - VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008, - VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009, - VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010, - VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011, - VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000, - VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000, - VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001, - VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002, - VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003, - VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004, - VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000, - VK_DYNAMIC_STATE_MAX_ENUM = 2147483647, -) -@cenum(VkFrontFace, - VK_FRONT_FACE_COUNTER_CLOCKWISE = 0, - VK_FRONT_FACE_CLOCKWISE = 1, - VK_FRONT_FACE_MAX_ENUM = 2147483647, -) -@cenum(VkVertexInputRate, - VK_VERTEX_INPUT_RATE_VERTEX = 0, - VK_VERTEX_INPUT_RATE_INSTANCE = 1, - VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647, -) -@cenum(VkPrimitiveTopology, - VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5, - VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6, - VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8, - VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9, - VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10, - VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647, -) -@cenum(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_MAX_ENUM = 2147483647, -) -@cenum(VkStencilOp, - VK_STENCIL_OP_KEEP = 0, - VK_STENCIL_OP_ZERO = 1, - VK_STENCIL_OP_REPLACE = 2, - VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3, - VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4, - VK_STENCIL_OP_INVERT = 5, - VK_STENCIL_OP_INCREMENT_AND_WRAP = 6, - VK_STENCIL_OP_DECREMENT_AND_WRAP = 7, - VK_STENCIL_OP_MAX_ENUM = 2147483647, -) -@cenum(VkLogicOp, - VK_LOGIC_OP_CLEAR = 0, - VK_LOGIC_OP_AND = 1, - VK_LOGIC_OP_AND_REVERSE = 2, - VK_LOGIC_OP_COPY = 3, - VK_LOGIC_OP_AND_INVERTED = 4, - VK_LOGIC_OP_NO_OP = 5, - VK_LOGIC_OP_XOR = 6, - VK_LOGIC_OP_OR = 7, - VK_LOGIC_OP_NOR = 8, - VK_LOGIC_OP_EQUIVALENT = 9, - VK_LOGIC_OP_INVERT = 10, - VK_LOGIC_OP_OR_REVERSE = 11, - VK_LOGIC_OP_COPY_INVERTED = 12, - VK_LOGIC_OP_OR_INVERTED = 13, - VK_LOGIC_OP_NAND = 14, - VK_LOGIC_OP_SET = 15, - VK_LOGIC_OP_MAX_ENUM = 2147483647, -) -@cenum(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_FLOAT_CUSTOM_EXT = 1000287003, - VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004, - VK_BORDER_COLOR_MAX_ENUM = 2147483647, -) -@cenum(VkFilter, - VK_FILTER_NEAREST = 0, - VK_FILTER_LINEAR = 1, - VK_FILTER_CUBIC_IMG = 1000015000, - VK_FILTER_CUBIC_EXT = 1000015000, - VK_FILTER_MAX_ENUM = 2147483647, -) -@cenum(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_MIRROR_CLAMP_TO_EDGE_KHR = 4, - VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647, -) -@cenum(VkSamplerMipmapMode, - VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, - VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, - VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647, -) -@cenum(VkDescriptorType, - VK_DESCRIPTOR_TYPE_SAMPLER = 0, - VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1, - VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2, - VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3, - VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4, - VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7, - VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8, - VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9, - VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10, - VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000, - VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkAttachmentLoadOp, - VK_ATTACHMENT_LOAD_OP_LOAD = 0, - VK_ATTACHMENT_LOAD_OP_CLEAR = 1, - VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2, - VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647, -) -@cenum(VkAttachmentStoreOp, - VK_ATTACHMENT_STORE_OP_STORE = 0, - VK_ATTACHMENT_STORE_OP_DONT_CARE = 1, - VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000, - VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647, -) -@cenum(VkPipelineBindPoint, - VK_PIPELINE_BIND_POINT_GRAPHICS = 0, - VK_PIPELINE_BIND_POINT_COMPUTE = 1, - VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000, - VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000, - VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647, -) -@cenum(VkCommandBufferLevel, - VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0, - VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1, - VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647, -) -@cenum(VkIndexType, - VK_INDEX_TYPE_UINT16 = 0, - VK_INDEX_TYPE_UINT32 = 1, - VK_INDEX_TYPE_NONE_KHR = 1000165000, - VK_INDEX_TYPE_UINT8_EXT = 1000265000, - VK_INDEX_TYPE_NONE_NV = 1000165000, - VK_INDEX_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkSubpassContents, - VK_SUBPASS_CONTENTS_INLINE = 0, - VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, - VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647, -) -@cenum(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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432, - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864, - VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728, - VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576, - VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288, - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152, - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304, - VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608, - VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216, - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072, - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144, - VK_ACCESS_NONE_KHR = 0, - VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152, - VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304, - VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 8388608, - VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647, -) -const VkAccessFlags = VkFlags +const VkFence = UInt64 + +const VkDeviceMemory = UInt64 + +const VkEvent = UInt64 + +const VkQueryPool = UInt64 + +const VkBufferView = UInt64 + +const VkImageView = UInt64 + +const VkShaderModule = UInt64 + +const VkPipelineCache = UInt64 + +const VkPipelineLayout = UInt64 + +const VkPipeline = UInt64 + +const VkRenderPass = UInt64 + +const VkDescriptorSetLayout = UInt64 + +const VkSampler = UInt64 + +const VkDescriptorSet = UInt64 + +const VkDescriptorPool = UInt64 + +const VkFramebuffer = UInt64 + +const VkCommandPool = UInt64 + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion = UInt64 + +const VkDescriptorUpdateTemplate = UInt64 + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR = UInt64 + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR = UInt64 + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR = UInt64 + +const VkDisplayModeKHR = UInt64 + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end -@cenum(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_MEMORY_PLANE_0_BIT_EXT = 128, - VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256, - VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512, - VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024, - 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, -) +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end -const VkImageAspectFlags = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} -@cenum(VkFormatFeatureFlagBits, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1, - VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2, - VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4, - VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8, - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16, - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32, - VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64, - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128, - VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256, - VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512, - VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024, - VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096, - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384, - VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768, - VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152, - VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304, - VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192, - VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 33554432, - VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 67108864, - VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 134217728, - VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 268435456, - VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912, - VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216, - VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 1073741824, - VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384, - VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768, - VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536, - 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192, - VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} -const VkFormatFeatureFlags = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} -@cenum(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_CORNER_SAMPLED_BIT_NV = 8192, - VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096, - VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384, - 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 VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} -const VkImageCreateFlags = VkFlags +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end -@cenum(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, -) +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end -const VkSampleCountFlags = VkFlags +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end -@cenum(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_VIDEO_DECODE_DST_BIT_KHR = 1024, - VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 2048, - VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 4096, - VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 8192, - VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 16384, - VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 32768, - VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 256, - VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512, - VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 256, - VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end -const VkImageUsageFlags = VkFlags -const VkInstanceCreateFlags = VkFlags +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements -@cenum(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, -) +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo -const VkMemoryHeapFlags = VkFlags +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 -@cenum(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_DEVICE_COHERENT_BIT_AMD = 64, - VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128, - VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647, -) +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 -const VkMemoryPropertyFlags = VkFlags +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 -@cenum(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_VIDEO_DECODE_BIT_KHR = 32, - VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 64, - VK_QUEUE_FLAG_BITS_MAX_ENUM = 2147483647, -) +const VkMemoryRequirements2KHR = VkMemoryRequirements2 -const VkQueueFlags = VkFlags -const VkDeviceCreateFlags = VkFlags +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 -@cenum(VkDeviceQueueCreateFlagBits, - VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1, - VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} -const VkDeviceQueueCreateFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} -@cenum(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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216, - VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144, - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432, - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152, - VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304, - VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288, - VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576, - VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608, - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072, - VK_PIPELINE_STAGE_NONE_KHR = 0, - VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152, - VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432, - VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 4194304, - VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -const VkPipelineStageFlags = VkFlags -const VkMemoryMapFlags = VkFlags +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end -@cenum(VkSparseMemoryBindFlagBits, - VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1, - VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end -const VkSparseMemoryBindFlags = VkFlags +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end -@cenum(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, -) +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end -const VkSparseImageFormatFlags = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} -@cenum(VkFenceCreateFlagBits, - VK_FENCE_CREATE_SIGNALED_BIT = 1, - VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} -const VkFenceCreateFlags = VkFlags -const VkSemaphoreCreateFlags = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} -@cenum(VkEventCreateFlagBits, - VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = 1, - VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT = UInt64 + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end -const VkEventCreateFlags = VkFlags +const VkDebugReportFlagsEXT = VkFlags -@cenum(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 VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} -const VkQueryPipelineStatisticFlags = VkFlags -const VkQueryPoolCreateFlags = VkFlags +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end -@cenum(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_WITH_STATUS_BIT_KHR = 16, - VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} -const VkQueryResultFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} -@cenum(VkBufferCreateFlagBits, - VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1, - VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2, - VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4, - VK_BUFFER_CREATE_PROTECTED_BIT = 8, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16, - VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16, - VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} -const VkBufferCreateFlags = VkFlags +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end -@cenum(VkBufferUsageFlagBits, - VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1, - VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2, - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4, - VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8, - VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16, - VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32, - VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64, - VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128, - VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072, - VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 8192, - VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 16384, - VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 32768, - VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 65536, - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048, - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096, - VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512, - VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 524288, - VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 1048576, - VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 1024, - VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072, - VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072, - VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end -const VkBufferUsageFlags = VkFlags -const VkBufferViewCreateFlags = VkFlags +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end -@cenum(VkImageViewCreateFlagBits, - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1, - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2, - VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end -const VkImageViewCreateFlags = VkFlags +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end -@cenum(VkShaderModuleCreateFlagBits, - VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end -const VkShaderModuleCreateFlags = VkFlags +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end -@cenum(VkPipelineCacheCreateFlagBits, - VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1, - VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end -const VkPipelineCacheCreateFlags = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} -@cenum(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 VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} -const VkColorComponentFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} -@cenum(VkPipelineCreateFlagBits, - VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1, - VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2, - VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4, - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8, - VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536, - VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072, - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096, - VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192, - VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 524288, - VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32, - VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64, - VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128, - VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144, - VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048, - VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256, - VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512, - 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 void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} -const VkPipelineCreateFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} -@cenum(VkPipelineShaderStageCreateFlagBits, - VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1, - VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2, - VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end -const VkPipelineShaderStageCreateFlags = VkFlags +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end -@cenum(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_RAYGEN_BIT_KHR = 256, - VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512, - VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024, - VK_SHADER_STAGE_MISS_BIT_KHR = 2048, - VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096, - VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192, - VK_SHADER_STAGE_TASK_BIT_NV = 64, - VK_SHADER_STAGE_MESH_BIT_NV = 128, - VK_SHADER_STAGE_RAYGEN_BIT_NV = 256, - VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512, - VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024, - VK_SHADER_STAGE_MISS_BIT_NV = 2048, - VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096, - VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192, - VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647, -) -@cenum(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, -) +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end -const VkCullModeFlags = VkFlags -const VkPipelineVertexInputStateCreateFlags = VkFlags -const VkPipelineInputAssemblyStateCreateFlags = VkFlags -const VkPipelineTessellationStateCreateFlags = VkFlags -const VkPipelineViewportStateCreateFlags = VkFlags -const VkPipelineRasterizationStateCreateFlags = VkFlags -const VkPipelineMultisampleStateCreateFlags = VkFlags -const VkPipelineDepthStencilStateCreateFlags = VkFlags -const VkPipelineColorBlendStateCreateFlags = VkFlags -const VkPipelineDynamicStateCreateFlags = VkFlags -const VkPipelineLayoutCreateFlags = VkFlags -const VkShaderStageFlags = VkFlags +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end -@cenum(VkSamplerCreateFlagBits, - VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1, - VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2, - VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end -const VkSamplerCreateFlags = VkFlags +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end -@cenum(VkDescriptorPoolCreateFlagBits, - VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2, - VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = 4, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2, - VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end -const VkDescriptorPoolCreateFlags = VkFlags -const VkDescriptorPoolResetFlags = VkFlags +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end -@cenum(VkDescriptorSetLayoutCreateFlagBits, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 1, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = 4, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 2, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags -const VkDescriptorSetLayoutCreateFlags = VkFlags +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end -@cenum(VkAttachmentDescriptionFlagBits, - VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1, - VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647, -) +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end -const VkAttachmentDescriptionFlags = VkFlags +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end -@cenum(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 void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} -const VkDependencyFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} -@cenum(VkFramebufferCreateFlagBits, - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1, - VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1, - VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} -const VkFramebufferCreateFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} -@cenum(VkRenderPassCreateFlagBits, - VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2, - VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} -const VkRenderPassCreateFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} -@cenum(VkSubpassDescriptionFlagBits, - VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1, - VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2, - VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4, - VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8, - VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end -const VkSubpassDescriptionFlags = VkFlags +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end -@cenum(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, -) +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end -const VkCommandPoolCreateFlags = VkFlags +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end -@cenum(VkCommandPoolResetFlagBits, - VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1, - VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end -const VkCommandPoolResetFlags = VkFlags +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end -@cenum(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, -) +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end -const VkCommandBufferUsageFlags = VkFlags +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end -@cenum(VkQueryControlFlagBits, - VK_QUERY_CONTROL_PRECISE_BIT = 1, - VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} -const VkQueryControlFlags = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} -@cenum(VkCommandBufferResetFlagBits, - VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1, - VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end -const VkCommandBufferResetFlags = VkFlags +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end -@cenum(VkStencilFaceFlagBits, - VK_STENCIL_FACE_FRONT_BIT = 1, - VK_STENCIL_FACE_BACK_BIT = 2, - VK_STENCIL_FACE_FRONT_AND_BACK = 3, - VK_STENCIL_FRONT_AND_BACK = 3, - VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647, -) +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} -const VkStencilFaceFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} -struct VkExtent2D - width::UInt32 - height::UInt32 +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct VkExtent3D - width::UInt32 - height::UInt32 - depth::UInt32 +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) end -struct VkOffset2D - x::Int32 - y::Int32 +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 end -struct VkOffset3D - x::Int32 - y::Int32 - z::Int32 +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 end -struct VkRect2D - offset::VkOffset2D - extent::VkExtent2D +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t end -struct VkBaseInStructure - sType::VkStructureType - pNext::Ptr{VkBaseInStructure} +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} end -struct VkBaseOutStructure - sType::VkStructureType - pNext::Ptr{VkBaseOutStructure} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) end -struct VkBufferMemoryBarrier +struct VkPhysicalDeviceCornerSampledImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize + cornerSampledImage::VkBool32 end -struct VkDispatchIndirectCommand - x::UInt32 - y::UInt32 - z::UInt32 +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 end -struct VkDrawIndexedIndirectCommand - indexCount::UInt32 - instanceCount::UInt32 - firstIndex::UInt32 - vertexOffset::Int32 - firstInstance::UInt32 -end +const VkExternalMemoryHandleTypeFlagsNV = VkFlags -struct VkDrawIndirectCommand - vertexCount::UInt32 - instanceCount::UInt32 - firstVertex::UInt32 - firstInstance::UInt32 +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 end -struct VkImageSubresourceRange - aspectMask::VkImageAspectFlags - baseMipLevel::UInt32 - levelCount::UInt32 - baseArrayLayer::UInt32 - layerCount::UInt32 +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV end -struct VkImageMemoryBarrier +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - oldLayout::VkImageLayout - newLayout::VkImageLayout - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - image::VkImage - subresourceRange::VkImageSubresourceRange + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -struct VkMemoryBarrier +struct VkExportMemoryAllocateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags + handleTypes::VkExternalMemoryHandleTypeFlagsNV end -const PFN_vkAllocationFunction = Ptr{Cvoid} -const PFN_vkFreeFunction = Ptr{Cvoid} -const PFN_vkInternalAllocationNotification = Ptr{Cvoid} -const PFN_vkInternalFreeNotification = Ptr{Cvoid} -const PFN_vkReallocationFunction = Ptr{Cvoid} -const PFN_vkVoidFunction = Ptr{Cvoid} - -struct VkAllocationCallbacks - pUserData::Ptr{Cvoid} - pfnAllocation::PFN_vkAllocationFunction - pfnReallocation::PFN_vkReallocationFunction - pfnFree::PFN_vkFreeFunction - pfnInternalAllocation::PFN_vkInternalAllocationNotification - pfnInternalFree::PFN_vkInternalFreeNotification +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 end -struct VkApplicationInfo +struct VkValidationFlagsEXT sType::VkStructureType pNext::Ptr{Cvoid} - pApplicationName::Cstring - applicationVersion::UInt32 - pEngineName::Cstring - engineVersion::UInt32 - apiVersion::UInt32 + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} end -struct VkFormatProperties - linearTilingFeatures::VkFormatFeatureFlags - optimalTilingFeatures::VkFormatFeatureFlags - bufferFeatures::VkFormatFeatureFlags +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 end -struct VkImageFormatProperties - maxExtent::VkExtent3D - maxMipLevels::UInt32 - maxArrayLayers::UInt32 - sampleCounts::VkSampleCountFlags - maxResourceSize::VkDeviceSize +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat end -struct VkInstanceCreateInfo +struct VkPhysicalDeviceASTCDecodeFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkInstanceCreateFlags - pApplicationInfo::Ptr{VkApplicationInfo} - enabledLayerCount::UInt32 - ppEnabledLayerNames::Ptr{Cstring} - enabledExtensionCount::UInt32 - ppEnabledExtensionNames::Ptr{Cstring} + decodeModeSharedExponent::VkBool32 end -struct VkMemoryHeap - size::VkDeviceSize - flags::VkMemoryHeapFlags +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkMemoryType - propertyFlags::VkMemoryPropertyFlags - heapIndex::UInt32 -end +const VkConditionalRenderingFlagsEXT = VkFlags -struct VkPhysicalDeviceFeatures - robustBufferAccess::VkBool32 - fullDrawIndexUint32::VkBool32 - imageCubeArray::VkBool32 - independentBlend::VkBool32 - geometryShader::VkBool32 - tessellationShader::VkBool32 - sampleRateShading::VkBool32 - dualSrcBlend::VkBool32 - logicOp::VkBool32 - multiDrawIndirect::VkBool32 - drawIndirectFirstInstance::VkBool32 - depthClamp::VkBool32 - depthBiasClamp::VkBool32 - fillModeNonSolid::VkBool32 - depthBounds::VkBool32 - wideLines::VkBool32 - largePoints::VkBool32 - alphaToOne::VkBool32 - multiViewport::VkBool32 - samplerAnisotropy::VkBool32 - textureCompressionETC2::VkBool32 - textureCompressionASTC_LDR::VkBool32 - textureCompressionBC::VkBool32 - occlusionQueryPrecise::VkBool32 - pipelineStatisticsQuery::VkBool32 - vertexPipelineStoresAndAtomics::VkBool32 - fragmentStoresAndAtomics::VkBool32 - shaderTessellationAndGeometryPointSize::VkBool32 - shaderImageGatherExtended::VkBool32 - shaderStorageImageExtendedFormats::VkBool32 - shaderStorageImageMultisample::VkBool32 - shaderStorageImageReadWithoutFormat::VkBool32 - shaderStorageImageWriteWithoutFormat::VkBool32 - shaderUniformBufferArrayDynamicIndexing::VkBool32 - shaderSampledImageArrayDynamicIndexing::VkBool32 - shaderStorageBufferArrayDynamicIndexing::VkBool32 - shaderStorageImageArrayDynamicIndexing::VkBool32 - shaderClipDistance::VkBool32 - shaderCullDistance::VkBool32 - shaderFloat64::VkBool32 - shaderInt64::VkBool32 - shaderInt16::VkBool32 - shaderResourceResidency::VkBool32 - shaderResourceMinLod::VkBool32 - sparseBinding::VkBool32 - sparseResidencyBuffer::VkBool32 - sparseResidencyImage2D::VkBool32 - sparseResidencyImage3D::VkBool32 - sparseResidency2Samples::VkBool32 - sparseResidency4Samples::VkBool32 - sparseResidency8Samples::VkBool32 - sparseResidency16Samples::VkBool32 - sparseResidencyAliased::VkBool32 - variableMultisampleRate::VkBool32 - inheritedQueries::VkBool32 +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT end -struct VkPhysicalDeviceLimits - maxImageDimension1D::UInt32 - maxImageDimension2D::UInt32 - maxImageDimension3D::UInt32 - maxImageDimensionCube::UInt32 - maxImageArrayLayers::UInt32 - maxTexelBufferElements::UInt32 - maxUniformBufferRange::UInt32 - maxStorageBufferRange::UInt32 - maxPushConstantsSize::UInt32 - maxMemoryAllocationCount::UInt32 - maxSamplerAllocationCount::UInt32 - bufferImageGranularity::VkDeviceSize - sparseAddressSpaceSize::VkDeviceSize - maxBoundDescriptorSets::UInt32 - maxPerStageDescriptorSamplers::UInt32 - maxPerStageDescriptorUniformBuffers::UInt32 - maxPerStageDescriptorStorageBuffers::UInt32 - maxPerStageDescriptorSampledImages::UInt32 - maxPerStageDescriptorStorageImages::UInt32 - maxPerStageDescriptorInputAttachments::UInt32 - maxPerStageResources::UInt32 - maxDescriptorSetSamplers::UInt32 - maxDescriptorSetUniformBuffers::UInt32 - maxDescriptorSetUniformBuffersDynamic::UInt32 - maxDescriptorSetStorageBuffers::UInt32 - maxDescriptorSetStorageBuffersDynamic::UInt32 - maxDescriptorSetSampledImages::UInt32 - maxDescriptorSetStorageImages::UInt32 - maxDescriptorSetInputAttachments::UInt32 - maxVertexInputAttributes::UInt32 - maxVertexInputBindings::UInt32 - maxVertexInputAttributeOffset::UInt32 - maxVertexInputBindingStride::UInt32 - maxVertexOutputComponents::UInt32 - maxTessellationGenerationLevel::UInt32 - maxTessellationPatchSize::UInt32 - maxTessellationControlPerVertexInputComponents::UInt32 - maxTessellationControlPerVertexOutputComponents::UInt32 - maxTessellationControlPerPatchOutputComponents::UInt32 - maxTessellationControlTotalOutputComponents::UInt32 - maxTessellationEvaluationInputComponents::UInt32 - maxTessellationEvaluationOutputComponents::UInt32 - maxGeometryShaderInvocations::UInt32 - maxGeometryInputComponents::UInt32 - maxGeometryOutputComponents::UInt32 - maxGeometryOutputVertices::UInt32 - maxGeometryTotalOutputComponents::UInt32 - maxFragmentInputComponents::UInt32 - maxFragmentOutputAttachments::UInt32 - maxFragmentDualSrcAttachments::UInt32 - maxFragmentCombinedOutputResources::UInt32 - maxComputeSharedMemorySize::UInt32 - maxComputeWorkGroupCount::NTuple{3, UInt32} - maxComputeWorkGroupInvocations::UInt32 - maxComputeWorkGroupSize::NTuple{3, UInt32} - subPixelPrecisionBits::UInt32 - subTexelPrecisionBits::UInt32 - mipmapPrecisionBits::UInt32 - maxDrawIndexedIndexValue::UInt32 - maxDrawIndirectCount::UInt32 - maxSamplerLodBias::Cfloat - maxSamplerAnisotropy::Cfloat - maxViewports::UInt32 - maxViewportDimensions::NTuple{2, UInt32} - viewportBoundsRange::NTuple{2, Cfloat} - viewportSubPixelBits::UInt32 - minMemoryMapAlignment::Csize_t - minTexelBufferOffsetAlignment::VkDeviceSize - minUniformBufferOffsetAlignment::VkDeviceSize - minStorageBufferOffsetAlignment::VkDeviceSize - minTexelOffset::Int32 - maxTexelOffset::UInt32 - minTexelGatherOffset::Int32 - maxTexelGatherOffset::UInt32 - minInterpolationOffset::Cfloat - maxInterpolationOffset::Cfloat - subPixelInterpolationOffsetBits::UInt32 - maxFramebufferWidth::UInt32 - maxFramebufferHeight::UInt32 - maxFramebufferLayers::UInt32 - framebufferColorSampleCounts::VkSampleCountFlags - framebufferDepthSampleCounts::VkSampleCountFlags - framebufferStencilSampleCounts::VkSampleCountFlags - framebufferNoAttachmentsSampleCounts::VkSampleCountFlags - maxColorAttachments::UInt32 - sampledImageColorSampleCounts::VkSampleCountFlags - sampledImageIntegerSampleCounts::VkSampleCountFlags - sampledImageDepthSampleCounts::VkSampleCountFlags - sampledImageStencilSampleCounts::VkSampleCountFlags - storageImageSampleCounts::VkSampleCountFlags - maxSampleMaskWords::UInt32 - timestampComputeAndGraphics::VkBool32 - timestampPeriod::Cfloat - maxClipDistances::UInt32 - maxCullDistances::UInt32 - maxCombinedClipAndCullDistances::UInt32 - discreteQueuePriorities::UInt32 - pointSizeRange::NTuple{2, Cfloat} - lineWidthRange::NTuple{2, Cfloat} - pointSizeGranularity::Cfloat - lineWidthGranularity::Cfloat - strictLines::VkBool32 - standardSampleLocations::VkBool32 - optimalBufferCopyOffsetAlignment::VkDeviceSize - optimalBufferCopyRowPitchAlignment::VkDeviceSize - nonCoherentAtomSize::VkDeviceSize +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 end -struct VkPhysicalDeviceMemoryProperties - memoryTypeCount::UInt32 - memoryTypes::NTuple{32, VkMemoryType} - memoryHeapCount::UInt32 - memoryHeaps::NTuple{16, VkMemoryHeap} +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 end -struct VkPhysicalDeviceSparseProperties - residencyStandard2DBlockShape::VkBool32 - residencyStandard2DMultisampleBlockShape::VkBool32 - residencyStandard3DBlockShape::VkBool32 - residencyAlignedMipSize::VkBool32 - residencyNonResidentStrict::VkBool32 +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) end -struct VkPhysicalDeviceProperties - apiVersion::UInt32 - driverVersion::UInt32 - vendorID::UInt32 - deviceID::UInt32 - deviceType::VkPhysicalDeviceType - deviceName::NTuple{256, UInt8} - pipelineCacheUUID::NTuple{16, UInt8} - limits::VkPhysicalDeviceLimits - sparseProperties::VkPhysicalDeviceSparseProperties +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -struct VkQueueFamilyProperties - queueFlags::VkQueueFlags - queueCount::UInt32 - timestampValidBits::UInt32 - minImageTransferGranularity::VkExtent3D +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat end -struct VkDeviceQueueCreateInfo +struct VkPipelineViewportWScalingStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceQueueCreateFlags - queueFamilyIndex::UInt32 - queueCount::UInt32 - pQueuePriorities::Ptr{Cfloat} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} end -struct VkDeviceCreateInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDeviceCreateFlags - queueCreateInfoCount::UInt32 - pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} - enabledLayerCount::UInt32 - ppEnabledLayerNames::Ptr{Cstring} - enabledExtensionCount::UInt32 - ppEnabledExtensionNames::Ptr{Cstring} - pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT end -struct VkExtensionProperties - extensionName::NTuple{256, UInt8} - specVersion::UInt32 +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) end -struct VkLayerProperties - layerName::NTuple{256, UInt8} - specVersion::UInt32 - implementationVersion::UInt32 - description::NTuple{256, UInt8} +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 end -struct VkSubmitInfo +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - pWaitDstStageMask::Ptr{VkPipelineStageFlags} - commandBufferCount::UInt32 - pCommandBuffers::Ptr{VkCommandBuffer} - signalSemaphoreCount::UInt32 - pSignalSemaphores::Ptr{VkSemaphore} + powerState::VkDisplayPowerStateEXT end -struct VkMappedMemoryRange +struct VkDeviceEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - offset::VkDeviceSize - size::VkDeviceSize + deviceEvent::VkDeviceEventTypeEXT end -struct VkMemoryAllocateInfo +struct VkDisplayEventInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - allocationSize::VkDeviceSize - memoryTypeIndex::UInt32 + displayEvent::VkDisplayEventTypeEXT end -struct VkMemoryRequirements - size::VkDeviceSize - alignment::VkDeviceSize - memoryTypeBits::UInt32 +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT end -struct VkSparseMemoryBind - resourceOffset::VkDeviceSize - size::VkDeviceSize - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - flags::VkSparseMemoryBindFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) end -struct VkSparseBufferMemoryBindInfo - buffer::VkBuffer - bindCount::UInt32 - pBinds::Ptr{VkSparseMemoryBind} +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) end -struct VkSparseImageOpaqueMemoryBindInfo - image::VkImage - bindCount::UInt32 - pBinds::Ptr{VkSparseMemoryBind} +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) end -struct VkImageSubresource - aspectMask::VkImageAspectFlags - mipLevel::UInt32 - arrayLayer::UInt32 +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) end -struct VkSparseImageMemoryBind - subresource::VkImageSubresource - offset::VkOffset3D - extent::VkExtent3D - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - flags::VkSparseMemoryBindFlags +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 end -struct VkSparseImageMemoryBindInfo - image::VkImage - bindCount::UInt32 - pBinds::Ptr{VkSparseImageMemoryBind} +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 end -struct VkBindSparseInfo +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - bufferBindCount::UInt32 - pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} - imageOpaqueBindCount::UInt32 - pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} - imageBindCount::UInt32 - pImageBinds::Ptr{VkSparseImageMemoryBindInfo} - signalSemaphoreCount::UInt32 - pSignalSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} end -struct VkSparseImageFormatProperties - aspectMask::VkImageAspectFlags - imageGranularity::VkExtent3D - flags::VkSparseImageFormatFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) end -struct VkSparseImageMemoryRequirements - formatProperties::VkSparseImageFormatProperties - imageMipTailFirstLod::UInt32 - imageMipTailSize::VkDeviceSize - imageMipTailOffset::VkDeviceSize - imageMipTailStride::VkDeviceSize +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) end -struct VkFenceCreateInfo +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkFenceCreateFlags + perViewPositionAllComponents::VkBool32 end -struct VkSemaphoreCreateInfo +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkSemaphoreCreateFlags + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat end -struct VkEventCreateInfo +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkEventCreateFlags + depthClipEnable::VkBool32 end -struct VkQueryPoolCreateInfo +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkQueryPoolCreateFlags - queryType::VkQueryType - queryCount::UInt32 - pipelineStatistics::VkQueryPipelineStatisticFlags + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 end -struct VkBufferCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkBufferCreateFlags - size::VkDeviceSize - usage::VkBufferUsageFlags - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} +struct VkXYColorEXT + x::Cfloat + y::Cfloat end -struct VkBufferViewCreateInfo +struct VkHdrMetadataEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkBufferViewCreateFlags - buffer::VkBuffer - format::VkFormat - offset::VkDeviceSize - range::VkDeviceSize + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat end -struct VkImageCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImageCreateFlags - imageType::VkImageType - format::VkFormat - extent::VkExtent3D - mipLevels::UInt32 - arrayLayers::UInt32 - samples::VkSampleCountFlagBits - tiling::VkImageTiling - usage::VkImageUsageFlags - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} - initialLayout::VkImageLayout +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) end -struct VkSubresourceLayout - offset::VkDeviceSize - size::VkDeviceSize - rowPitch::VkDeviceSize - arrayPitch::VkDeviceSize - depthPitch::VkDeviceSize +const VkDebugUtilsMessengerEXT = UInt64 + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 end -struct VkComponentMapping - r::VkComponentSwizzle - g::VkComponentSwizzle - b::VkComponentSwizzle - a::VkComponentSwizzle +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 end -struct VkImageViewCreateInfo +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageViewCreateFlags - image::VkImage - viewType::VkImageViewType - format::VkFormat - components::VkComponentMapping - subresourceRange::VkImageSubresourceRange + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} end -struct VkShaderModuleCreateInfo +struct VkDebugUtilsObjectNameInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkShaderModuleCreateFlags - codeSize::Csize_t - pCode::Ptr{UInt32} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} end -struct VkPipelineCacheCreateInfo +struct VkDebugUtilsMessengerCallbackDataEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCacheCreateFlags - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} -end - -struct VkSpecializationMapEntry - constantID::UInt32 - offset::UInt32 - size::Csize_t + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} end -struct VkSpecializationInfo - mapEntryCount::UInt32 - pMapEntries::Ptr{VkSpecializationMapEntry} - dataSize::Csize_t - pData::Ptr{Cvoid} -end +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} -struct VkPipelineShaderStageCreateInfo +struct VkDebugUtilsMessengerCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineShaderStageCreateFlags - stage::VkShaderStageFlagBits - _module::VkShaderModule - pName::Cstring - pSpecializationInfo::Ptr{VkSpecializationInfo} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} end -struct VkComputePipelineCreateInfo +struct VkDebugUtilsObjectTagInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stage::VkPipelineShaderStageCreateInfo - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} end -struct VkVertexInputBindingDescription - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -struct VkVertexInputAttributeDescription - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 -end +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -struct VkPipelineVertexInputStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineVertexInputStateCreateFlags - vertexBindingDescriptionCount::UInt32 - pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} - vertexAttributeDescriptionCount::UInt32 - pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) end -struct VkPipelineInputAssemblyStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineInputAssemblyStateCreateFlags - topology::VkPrimitiveTopology - primitiveRestartEnable::VkBool32 +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) end -struct VkPipelineTessellationStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineTessellationStateCreateFlags - patchControlPoints::UInt32 +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -struct VkViewport - x::Cfloat - y::Cfloat - width::Cfloat - height::Cfloat - minDepth::Cfloat - maxDepth::Cfloat +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) end -struct VkPipelineViewportStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportStateCreateFlags - viewportCount::UInt32 - pViewports::Ptr{VkViewport} - scissorCount::UInt32 - pScissors::Ptr{VkRect2D} +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) end -struct VkPipelineRasterizationStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateCreateFlags - depthClampEnable::VkBool32 - rasterizerDiscardEnable::VkBool32 - polygonMode::VkPolygonMode - cullMode::VkCullModeFlags - frontFace::VkFrontFace - depthBiasEnable::VkBool32 - depthBiasConstantFactor::Cfloat - depthBiasClamp::Cfloat - depthBiasSlopeFactor::Cfloat - lineWidth::Cfloat +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) end -struct VkPipelineMultisampleStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineMultisampleStateCreateFlags - rasterizationSamples::VkSampleCountFlagBits - sampleShadingEnable::VkBool32 - minSampleShading::Cfloat - pSampleMask::Ptr{VkSampleMask} - alphaToCoverageEnable::VkBool32 - alphaToOneEnable::VkBool32 +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) end -struct VkStencilOpState - failOp::VkStencilOp - passOp::VkStencilOp - depthFailOp::VkStencilOp - compareOp::VkCompareOp - compareMask::UInt32 - writeMask::UInt32 - reference::UInt32 +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) end -struct VkPipelineDepthStencilStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDepthStencilStateCreateFlags - depthTestEnable::VkBool32 - depthWriteEnable::VkBool32 - depthCompareOp::VkCompareOp - depthBoundsTestEnable::VkBool32 - stencilTestEnable::VkBool32 - front::VkStencilOpState - back::VkStencilOpState - minDepthBounds::Cfloat - maxDepthBounds::Cfloat +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) end -struct VkPipelineColorBlendAttachmentState - blendEnable::VkBool32 - srcColorBlendFactor::VkBlendFactor - dstColorBlendFactor::VkBlendFactor - colorBlendOp::VkBlendOp - srcAlphaBlendFactor::VkBlendFactor - dstAlphaBlendFactor::VkBlendFactor - alphaBlendOp::VkBlendOp - colorWriteMask::VkColorComponentFlags +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) end -struct VkPipelineColorBlendStateCreateInfo +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineColorBlendStateCreateFlags - logicOpEnable::VkBool32 - logicOp::VkLogicOp - attachmentCount::UInt32 - pAttachments::Ptr{VkPipelineColorBlendAttachmentState} - blendConstants::NTuple{4, Cfloat} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 end -struct VkPipelineDynamicStateCreateInfo +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineDynamicStateCreateFlags - dynamicStateCount::UInt32 - pDynamicStates::Ptr{VkDynamicState} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 end -struct VkGraphicsPipelineCreateInfo +struct VkWriteDescriptorSetInlineUniformBlockEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} - pViewportState::Ptr{VkPipelineViewportStateCreateInfo} - pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} - pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} - pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} - pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} - pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} - layout::VkPipelineLayout - renderPass::VkRenderPass - subpass::UInt32 - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end - -struct VkPushConstantRange - stageFlags::VkShaderStageFlags - offset::UInt32 - size::UInt32 + dataSize::UInt32 + pData::Ptr{Cvoid} end -struct VkPipelineLayoutCreateInfo +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkPipelineLayoutCreateFlags - setLayoutCount::UInt32 - pSetLayouts::Ptr{VkDescriptorSetLayout} - pushConstantRangeCount::UInt32 - pPushConstantRanges::Ptr{VkPushConstantRange} + maxInlineUniformBlockBindings::UInt32 end -struct VkSamplerCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkSamplerCreateFlags - magFilter::VkFilter - minFilter::VkFilter - mipmapMode::VkSamplerMipmapMode - addressModeU::VkSamplerAddressMode - addressModeV::VkSamplerAddressMode - addressModeW::VkSamplerAddressMode - mipLodBias::Cfloat - anisotropyEnable::VkBool32 - maxAnisotropy::Cfloat - compareEnable::VkBool32 - compareOp::VkCompareOp - minLod::Cfloat - maxLod::Cfloat - borderColor::VkBorderColor - unnormalizedCoordinates::VkBool32 +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat end -struct VkCopyDescriptorSet +struct VkSampleLocationsInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - srcSet::VkDescriptorSet - srcBinding::UInt32 - srcArrayElement::UInt32 - dstSet::VkDescriptorSet - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 -end - -struct VkDescriptorBufferInfo - buffer::VkBuffer - offset::VkDeviceSize - range::VkDeviceSize + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} end -struct VkDescriptorImageInfo - sampler::VkSampler - imageView::VkImageView - imageLayout::VkImageLayout +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkDescriptorPoolSize - type::VkDescriptorType - descriptorCount::UInt32 +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkDescriptorPoolCreateInfo +struct VkRenderPassSampleLocationsBeginInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDescriptorPoolCreateFlags - maxSets::UInt32 - poolSizeCount::UInt32 - pPoolSizes::Ptr{VkDescriptorPoolSize} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} end -struct VkDescriptorSetAllocateInfo +struct VkPipelineSampleLocationsStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - descriptorPool::VkDescriptorPool - descriptorSetCount::UInt32 - pSetLayouts::Ptr{VkDescriptorSetLayout} -end - -struct VkDescriptorSetLayoutBinding - binding::UInt32 - descriptorType::VkDescriptorType - descriptorCount::UInt32 - stageFlags::VkShaderStageFlags - pImmutableSamplers::Ptr{VkSampler} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT end -struct VkDescriptorSetLayoutCreateInfo +struct VkPhysicalDeviceSampleLocationsPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkDescriptorSetLayoutCreateFlags - bindingCount::UInt32 - pBindings::Ptr{VkDescriptorSetLayoutBinding} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 end -struct VkWriteDescriptorSet +struct VkMultisamplePropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - dstSet::VkDescriptorSet - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 - descriptorType::VkDescriptorType - pImageInfo::Ptr{VkDescriptorImageInfo} - pBufferInfo::Ptr{VkDescriptorBufferInfo} - pTexelBufferView::Ptr{VkBufferView} + maxSampleLocationGridSize::VkExtent2D end -struct VkAttachmentDescription - flags::VkAttachmentDescriptionFlags - format::VkFormat - samples::VkSampleCountFlagBits - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - stencilLoadOp::VkAttachmentLoadOp - stencilStoreOp::VkAttachmentStoreOp - initialLayout::VkImageLayout - finalLayout::VkImageLayout -end +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -struct VkAttachmentReference - attachment::UInt32 - layout::VkImageLayout -end +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} -struct VkFramebufferCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkFramebufferCreateFlags - renderPass::VkRenderPass - attachmentCount::UInt32 - pAttachments::Ptr{VkImageView} - width::UInt32 - height::UInt32 - layers::UInt32 +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) end -struct VkSubpassDescription - flags::VkSubpassDescriptionFlags - pipelineBindPoint::VkPipelineBindPoint - inputAttachmentCount::UInt32 - pInputAttachments::Ptr{VkAttachmentReference} - colorAttachmentCount::UInt32 - pColorAttachments::Ptr{VkAttachmentReference} - pResolveAttachments::Ptr{VkAttachmentReference} - pDepthStencilAttachment::Ptr{VkAttachmentReference} - preserveAttachmentCount::UInt32 - pPreserveAttachments::Ptr{UInt32} +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) end -struct VkSubpassDependency - srcSubpass::UInt32 - dstSubpass::UInt32 - srcStageMask::VkPipelineStageFlags - dstStageMask::VkPipelineStageFlags - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - dependencyFlags::VkDependencyFlags +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 end -struct VkRenderPassCreateInfo +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkRenderPassCreateFlags - attachmentCount::UInt32 - pAttachments::Ptr{VkAttachmentDescription} - subpassCount::UInt32 - pSubpasses::Ptr{VkSubpassDescription} - dependencyCount::UInt32 - pDependencies::Ptr{VkSubpassDependency} + advancedBlendCoherentOperations::VkBool32 end -struct VkCommandPoolCreateInfo +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkCommandPoolCreateFlags - queueFamilyIndex::UInt32 + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 end -struct VkCommandBufferAllocateInfo +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - commandPool::VkCommandPool - level::VkCommandBufferLevel - commandBufferCount::UInt32 + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT end -struct VkCommandBufferInheritanceInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - renderPass::VkRenderPass - subpass::UInt32 - framebuffer::VkFramebuffer - occlusionQueryEnable::VkBool32 - queryFlags::VkQueryControlFlags - pipelineStatistics::VkQueryPipelineStatisticFlags -end +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags -struct VkCommandBufferBeginInfo +struct VkPipelineCoverageToColorStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkCommandBufferUsageFlags - pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} -end - -struct VkBufferCopy - srcOffset::VkDeviceSize - dstOffset::VkDeviceSize - size::VkDeviceSize + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 end -struct VkImageSubresourceLayers - aspectMask::VkImageAspectFlags - mipLevel::UInt32 - baseArrayLayer::UInt32 - layerCount::UInt32 +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 end -struct VkBufferImageCopy - bufferOffset::VkDeviceSize - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D -end +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags -struct VkClearColorValue - float32::NTuple{4, Cfloat} +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} end -struct VkClearDepthStencilValue - depth::Cfloat - stencil::UInt32 +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 end -struct VkClearValue - color::VkClearColorValue +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 end -struct VkClearAttachment - aspectMask::VkImageAspectFlags - colorAttachment::UInt32 - clearValue::VkClearValue +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags end -struct VkClearRect - rect::VkRect2D - baseArrayLayer::UInt32 - layerCount::UInt32 +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} end -struct VkImageBlit - srcSubresource::VkImageSubresourceLayers - srcOffsets::NTuple{2, VkOffset3D} - dstSubresource::VkImageSubresourceLayers - dstOffsets::NTuple{2, VkOffset3D} +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} end -struct VkImageCopy - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} end -struct VkImageResolve - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} end -struct VkRenderPassBeginInfo +struct VkImageDrmFormatModifierPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - renderPass::VkRenderPass - framebuffer::VkFramebuffer - renderArea::VkRect2D - clearValueCount::UInt32 - pClearValues::Ptr{VkClearValue} + drmFormatModifier::UInt64 end -const PFN_vkCreateInstance = Ptr{Cvoid} -const PFN_vkDestroyInstance = Ptr{Cvoid} -const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} -const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} -const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} -const PFN_vkCreateDevice = Ptr{Cvoid} -const PFN_vkDestroyDevice = Ptr{Cvoid} -const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} -const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} -const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} -const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} -const PFN_vkGetDeviceQueue = Ptr{Cvoid} -const PFN_vkQueueSubmit = Ptr{Cvoid} -const PFN_vkQueueWaitIdle = Ptr{Cvoid} -const PFN_vkDeviceWaitIdle = Ptr{Cvoid} -const PFN_vkAllocateMemory = Ptr{Cvoid} -const PFN_vkFreeMemory = Ptr{Cvoid} -const PFN_vkMapMemory = Ptr{Cvoid} -const PFN_vkUnmapMemory = Ptr{Cvoid} -const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} -const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} -const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} -const PFN_vkBindBufferMemory = Ptr{Cvoid} -const PFN_vkBindImageMemory = Ptr{Cvoid} -const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} -const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} -const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} -const PFN_vkQueueBindSparse = Ptr{Cvoid} -const PFN_vkCreateFence = Ptr{Cvoid} -const PFN_vkDestroyFence = Ptr{Cvoid} -const PFN_vkResetFences = Ptr{Cvoid} -const PFN_vkGetFenceStatus = Ptr{Cvoid} -const PFN_vkWaitForFences = Ptr{Cvoid} -const PFN_vkCreateSemaphore = Ptr{Cvoid} -const PFN_vkDestroySemaphore = Ptr{Cvoid} -const PFN_vkCreateEvent = Ptr{Cvoid} -const PFN_vkDestroyEvent = Ptr{Cvoid} -const PFN_vkGetEventStatus = Ptr{Cvoid} -const PFN_vkSetEvent = Ptr{Cvoid} -const PFN_vkResetEvent = Ptr{Cvoid} -const PFN_vkCreateQueryPool = Ptr{Cvoid} -const PFN_vkDestroyQueryPool = Ptr{Cvoid} -const PFN_vkGetQueryPoolResults = Ptr{Cvoid} -const PFN_vkCreateBuffer = Ptr{Cvoid} -const PFN_vkDestroyBuffer = Ptr{Cvoid} -const PFN_vkCreateBufferView = Ptr{Cvoid} -const PFN_vkDestroyBufferView = Ptr{Cvoid} -const PFN_vkCreateImage = Ptr{Cvoid} -const PFN_vkDestroyImage = Ptr{Cvoid} -const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} -const PFN_vkCreateImageView = Ptr{Cvoid} -const PFN_vkDestroyImageView = Ptr{Cvoid} -const PFN_vkCreateShaderModule = Ptr{Cvoid} -const PFN_vkDestroyShaderModule = Ptr{Cvoid} -const PFN_vkCreatePipelineCache = Ptr{Cvoid} -const PFN_vkDestroyPipelineCache = Ptr{Cvoid} -const PFN_vkGetPipelineCacheData = Ptr{Cvoid} -const PFN_vkMergePipelineCaches = Ptr{Cvoid} -const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} -const PFN_vkCreateComputePipelines = Ptr{Cvoid} -const PFN_vkDestroyPipeline = Ptr{Cvoid} -const PFN_vkCreatePipelineLayout = Ptr{Cvoid} -const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} -const PFN_vkCreateSampler = Ptr{Cvoid} -const PFN_vkDestroySampler = Ptr{Cvoid} -const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} -const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} -const PFN_vkCreateDescriptorPool = Ptr{Cvoid} -const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} -const PFN_vkResetDescriptorPool = Ptr{Cvoid} -const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} -const PFN_vkFreeDescriptorSets = Ptr{Cvoid} -const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} -const PFN_vkCreateFramebuffer = Ptr{Cvoid} -const PFN_vkDestroyFramebuffer = Ptr{Cvoid} -const PFN_vkCreateRenderPass = Ptr{Cvoid} -const PFN_vkDestroyRenderPass = Ptr{Cvoid} -const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} -const PFN_vkCreateCommandPool = Ptr{Cvoid} -const PFN_vkDestroyCommandPool = Ptr{Cvoid} -const PFN_vkResetCommandPool = Ptr{Cvoid} -const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} -const PFN_vkFreeCommandBuffers = Ptr{Cvoid} -const PFN_vkBeginCommandBuffer = Ptr{Cvoid} -const PFN_vkEndCommandBuffer = Ptr{Cvoid} -const PFN_vkResetCommandBuffer = Ptr{Cvoid} -const PFN_vkCmdBindPipeline = Ptr{Cvoid} -const PFN_vkCmdSetViewport = Ptr{Cvoid} -const PFN_vkCmdSetScissor = Ptr{Cvoid} -const PFN_vkCmdSetLineWidth = Ptr{Cvoid} -const PFN_vkCmdSetDepthBias = Ptr{Cvoid} -const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} -const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} -const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} -const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} -const PFN_vkCmdSetStencilReference = Ptr{Cvoid} -const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} -const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} -const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} -const PFN_vkCmdDraw = Ptr{Cvoid} -const PFN_vkCmdDrawIndexed = Ptr{Cvoid} -const PFN_vkCmdDrawIndirect = Ptr{Cvoid} -const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} -const PFN_vkCmdDispatch = Ptr{Cvoid} -const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} -const PFN_vkCmdCopyBuffer = Ptr{Cvoid} -const PFN_vkCmdCopyImage = Ptr{Cvoid} -const PFN_vkCmdBlitImage = Ptr{Cvoid} -const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} -const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} -const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} -const PFN_vkCmdFillBuffer = Ptr{Cvoid} -const PFN_vkCmdClearColorImage = Ptr{Cvoid} -const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} -const PFN_vkCmdClearAttachments = Ptr{Cvoid} -const PFN_vkCmdResolveImage = Ptr{Cvoid} -const PFN_vkCmdSetEvent = Ptr{Cvoid} -const PFN_vkCmdResetEvent = Ptr{Cvoid} -const PFN_vkCmdWaitEvents = Ptr{Cvoid} -const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} -const PFN_vkCmdBeginQuery = Ptr{Cvoid} -const PFN_vkCmdEndQuery = Ptr{Cvoid} -const PFN_vkCmdResetQueryPool = Ptr{Cvoid} -const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} -const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} -const PFN_vkCmdPushConstants = Ptr{Cvoid} -const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} -const PFN_vkCmdNextSubpass = Ptr{Cvoid} -const PFN_vkCmdEndRenderPass = Ptr{Cvoid} -const PFN_vkCmdExecuteCommands = Ptr{Cvoid} -const VkSamplerYcbcrConversion_T = Cvoid -const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} -const VkDescriptorUpdateTemplate_T = Cvoid -const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} - -@cenum(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_MAX_ENUM = 2147483647, -) -@cenum(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_MAX_ENUM = 2147483647, -) -@cenum(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_MAX_ENUM = 2147483647, -) -@cenum(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_MAX_ENUM = 2147483647, -) -@cenum(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_MAX_ENUM = 2147483647, -) -@cenum(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_MAX_ENUM = 2147483647, -) -@cenum(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, -) - -const VkSubgroupFeatureFlags = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} -@cenum(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, -) +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end -const VkPeerMemoryFeatureFlags = VkFlags +const VkValidationCacheEXT = UInt64 -@cenum(VkMemoryAllocateFlagBits, - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4, - VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2, - VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4, - VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647, -) +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end -const VkMemoryAllocateFlags = VkFlags -const VkCommandPoolTrimFlags = VkFlags -const VkDescriptorUpdateTemplateCreateFlags = VkFlags +const VkValidationCacheCreateFlagsEXT = VkFlags -@cenum(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_ZIRCON_VMO_BIT_FUCHSIA = 2048, - 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, -) +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end -const VkExternalMemoryHandleTypeFlags = VkFlags +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end -@cenum(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 VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -const VkExternalMemoryFeatureFlags = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -@cenum(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 VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -const VkExternalFenceHandleTypeFlags = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -@cenum(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, -) +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end -const VkExternalFenceFeatureFlags = VkFlags +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end -@cenum(VkFenceImportFlagBits, - VK_FENCE_IMPORT_TEMPORARY_BIT = 1, - VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1, - VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647, -) +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end -const VkFenceImportFlags = VkFlags +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end -@cenum(VkSemaphoreImportFlagBits, - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1, - VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1, - VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647, -) +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -const VkSemaphoreImportFlags = VkFlags +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -@cenum(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_ZIRCON_EVENT_BIT_FUCHSIA = 128, - VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = 8, - 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, -) +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -const VkExternalSemaphoreHandleTypeFlags = VkFlags +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -@cenum(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, -) +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -const VkExternalSemaphoreFeatureFlags = VkFlags +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -struct VkPhysicalDeviceSubgroupProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - subgroupSize::UInt32 - supportedStages::VkShaderStageFlags - supportedOperations::VkSubgroupFeatureFlags - quadOperationsInAllStages::VkBool32 -end +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport -struct VkBindBufferMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - memory::VkDeviceMemory - memoryOffset::VkDeviceSize +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 end -struct VkBindImageMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - memory::VkDeviceMemory - memoryOffset::VkDeviceSize +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} end -struct VkPhysicalDevice16BitStorageFeatures +struct VkPipelineViewportShadingRateImageStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - storageBuffer16BitAccess::VkBool32 - uniformAndStorageBuffer16BitAccess::VkBool32 - storagePushConstant16::VkBool32 - storageInputOutput16::VkBool32 + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} end -struct VkMemoryDedicatedRequirements +struct VkPhysicalDeviceShadingRateImageFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - prefersDedicatedAllocation::VkBool32 - requiresDedicatedAllocation::VkBool32 + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 end -struct VkMemoryDedicatedAllocateInfo +struct VkPhysicalDeviceShadingRateImagePropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 end -struct VkMemoryAllocateFlagsInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMemoryAllocateFlags - deviceMask::UInt32 +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 end -struct VkDeviceGroupRenderPassBeginInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMask::UInt32 - deviceRenderAreaCount::UInt32 - pDeviceRenderAreas::Ptr{VkRect2D} +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} end -struct VkDeviceGroupCommandBufferBeginInfo +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - deviceMask::UInt32 + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} end -struct VkDeviceGroupSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphoreDeviceIndices::Ptr{UInt32} - commandBufferCount::UInt32 - pCommandBufferDeviceMasks::Ptr{UInt32} - signalSemaphoreCount::UInt32 - pSignalSemaphoreDeviceIndices::Ptr{UInt32} +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) end -struct VkDeviceGroupBindSparseInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - resourceDeviceIndex::UInt32 - memoryDeviceIndex::UInt32 +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) end -struct VkBindBufferMemoryDeviceGroupInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) end -struct VkBindImageMemoryDeviceGroupInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} - splitInstanceBindRegionCount::UInt32 - pSplitInstanceBindRegions::Ptr{VkRect2D} +const VkAccelerationStructureKHR = UInt64 + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 end -struct VkPhysicalDeviceGroupProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - physicalDeviceCount::UInt32 - physicalDevices::NTuple{32, VkPhysicalDevice} - subsetAllocation::VkBool32 +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 end -struct VkDeviceGroupDeviceCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - physicalDeviceCount::UInt32 - pPhysicalDevices::Ptr{VkPhysicalDevice} +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 end -struct VkBufferMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 end -struct VkImageMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 end -struct VkImageSparseMemoryRequirementsInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkMemoryRequirements2 - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryRequirements::VkMemoryRequirements +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkSparseImageMemoryRequirements2 - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryRequirements::VkSparseImageMemoryRequirements +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 end -struct VkPhysicalDeviceFeatures2 +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - features::VkPhysicalDeviceFeatures + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 end -struct VkPhysicalDeviceProperties2 +struct VkRayTracingPipelineCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - properties::VkPhysicalDeviceProperties + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 end -struct VkFormatProperties2 +struct VkGeometryTrianglesNV sType::VkStructureType pNext::Ptr{Cvoid} - formatProperties::VkFormatProperties + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize end -struct VkImageFormatProperties2 +struct VkGeometryAABBNV sType::VkStructureType pNext::Ptr{Cvoid} - imageFormatProperties::VkImageFormatProperties + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize end -struct VkPhysicalDeviceImageFormatInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - type::VkImageType - tiling::VkImageTiling - usage::VkImageUsageFlags - flags::VkImageCreateFlags +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV end -struct VkQueueFamilyProperties2 +struct VkGeometryNV sType::VkStructureType pNext::Ptr{Cvoid} - queueFamilyProperties::VkQueueFamilyProperties + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR end -struct VkPhysicalDeviceMemoryProperties2 +struct VkAccelerationStructureInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryProperties::VkPhysicalDeviceMemoryProperties + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} end -struct VkSparseImageFormatProperties2 +struct VkAccelerationStructureCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - properties::VkSparseImageFormatProperties + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV end -struct VkPhysicalDeviceSparseImageFormatInfo2 +struct VkBindAccelerationStructureMemoryInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - format::VkFormat - type::VkImageType - samples::VkSampleCountFlagBits - usage::VkImageUsageFlags - tiling::VkImageTiling + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} end -struct VkPhysicalDevicePointClippingProperties +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR sType::VkStructureType pNext::Ptr{Cvoid} - pointClippingBehavior::VkPointClippingBehavior + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} end -struct VkInputAttachmentAspectReference - subpass::UInt32 - inputAttachmentIndex::UInt32 - aspectMask::VkImageAspectFlags -end +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR -struct VkRenderPassInputAttachmentAspectCreateInfo +struct VkAccelerationStructureMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - aspectReferenceCount::UInt32 - pAspectReferences::Ptr{VkInputAttachmentAspectReference} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV end -struct VkImageViewUsageCreateInfo +struct VkPhysicalDeviceRayTracingPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - usage::VkImageUsageFlags + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 end -struct VkPipelineTessellationDomainOriginStateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - domainOrigin::VkTessellationDomainOrigin +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} end -struct VkRenderPassMultiviewCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - subpassCount::UInt32 - pViewMasks::Ptr{UInt32} - dependencyCount::UInt32 - pViewOffsets::Ptr{Int32} - correlationMaskCount::UInt32 - pCorrelationMasks::Ptr{UInt32} +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat end -struct VkPhysicalDeviceMultiviewFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - multiview::VkBool32 - multiviewGeometryShader::VkBool32 - multiviewTessellationShader::VkBool32 +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) end -struct VkPhysicalDeviceMultiviewProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxMultiviewViewCount::UInt32 - maxMultiviewInstanceIndex::UInt32 +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) end -struct VkPhysicalDeviceVariablePointersFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - variablePointersStorageBuffer::VkBool32 - variablePointers::VkBool32 +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) end -const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end -struct VkPhysicalDeviceProtectedMemoryFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedMemory::VkBool32 +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) end -struct VkPhysicalDeviceProtectedMemoryProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedNoFault::VkBool32 +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) end -struct VkDeviceQueueInfo2 - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceQueueCreateFlags - queueFamilyIndex::UInt32 - queueIndex::UInt32 +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) end -struct VkProtectedSubmitInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - protectedSubmit::VkBool32 +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) end -struct VkSamplerYcbcrConversionCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - ycbcrModel::VkSamplerYcbcrModelConversion - ycbcrRange::VkSamplerYcbcrRange - components::VkComponentMapping - xChromaOffset::VkChromaLocation - yChromaOffset::VkChromaLocation - chromaFilter::VkFilter - forceExplicitReconstruction::VkBool32 +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) end -struct VkSamplerYcbcrConversionInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - conversion::VkSamplerYcbcrConversion +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) end -struct VkBindImagePlaneMemoryInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - planeAspect::VkImageAspectFlagBits +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) end -struct VkImagePlaneMemoryRequirementsInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - planeAspect::VkImageAspectFlagBits +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -struct VkPhysicalDeviceSamplerYcbcrConversionFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - samplerYcbcrConversion::VkBool32 +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) end -struct VkSamplerYcbcrConversionImageFormatProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - combinedImageSamplerDescriptorCount::UInt32 +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) end -struct VkDescriptorUpdateTemplateEntry - dstBinding::UInt32 - dstArrayElement::UInt32 - descriptorCount::UInt32 - descriptorType::VkDescriptorType - offset::Csize_t - stride::Csize_t +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -struct VkDescriptorUpdateTemplateCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDescriptorUpdateTemplateCreateFlags - descriptorUpdateEntryCount::UInt32 - pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} - templateType::VkDescriptorUpdateTemplateType - descriptorSetLayout::VkDescriptorSetLayout - pipelineBindPoint::VkPipelineBindPoint - pipelineLayout::VkPipelineLayout - set::UInt32 +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) end -struct VkExternalMemoryProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlags - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags - compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) end -struct VkPhysicalDeviceExternalImageFormatInfo +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits + representativeFragmentTest::VkBool32 end -struct VkExternalImageFormatProperties +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryProperties::VkExternalMemoryProperties + representativeFragmentTestEnable::VkBool32 end -struct VkPhysicalDeviceExternalBufferInfo +struct VkPhysicalDeviceImageViewImageFormatInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkBufferCreateFlags - usage::VkBufferUsageFlags - handleType::VkExternalMemoryHandleTypeFlagBits + imageViewType::VkImageViewType end -struct VkExternalBufferProperties +struct VkFilterCubicImageViewImageFormatPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - externalMemoryProperties::VkExternalMemoryProperties + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 end -struct VkPhysicalDeviceIDProperties +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceUUID::NTuple{16, UInt8} - driverUUID::NTuple{16, UInt8} - deviceLUID::NTuple{8, UInt8} - deviceNodeMask::UInt32 - deviceLUIDValid::VkBool32 + globalPriority::VkQueueGlobalPriorityEXT end -struct VkExternalMemoryImageCreateInfo +struct VkImportMemoryHostPointerInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} end -struct VkExternalMemoryBufferCreateInfo +struct VkMemoryHostPointerPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags + memoryTypeBits::UInt32 end -struct VkExportMemoryAllocateInfo +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlags + minImportedHostPointerAlignment::VkDeviceSize end -struct VkPhysicalDeviceExternalFenceInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalFenceHandleTypeFlagBits + compilerControlFlags::VkPipelineCompilerControlFlagsAMD end -struct VkExternalFenceProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags - compatibleHandleTypes::VkExternalFenceHandleTypeFlags - externalFenceFeatures::VkExternalFenceFeatureFlags +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 end -struct VkExportFenceCreateInfo +struct VkCalibratedTimestampInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleTypes::VkExternalFenceHandleTypeFlags + timeDomain::VkTimeDomainEXT end -struct VkExportSemaphoreCreateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalSemaphoreHandleTypeFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) end -struct VkPhysicalDeviceExternalSemaphoreInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalSemaphoreHandleTypeFlagBits +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) end -struct VkExternalSemaphoreProperties +struct VkPhysicalDeviceShaderCorePropertiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags - compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags - externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 end -struct VkPhysicalDeviceMaintenance3Properties - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPerSetDescriptors::UInt32 - maxMemoryAllocationSize::VkDeviceSize +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 end -struct VkDescriptorSetLayoutSupport +struct VkDeviceMemoryOverallocationCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - supported::VkBool32 + overallocationBehavior::VkMemoryOverallocationBehaviorAMD end -struct VkPhysicalDeviceShaderDrawParametersFeatures +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderDrawParameters::VkBool32 + maxVertexAttribDivisor::UInt32 end -const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures -const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} -const PFN_vkBindBufferMemory2 = Ptr{Cvoid} -const PFN_vkBindImageMemory2 = Ptr{Cvoid} -const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} -const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} -const PFN_vkCmdDispatchBase = Ptr{Cvoid} -const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} -const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} -const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} -const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} -const PFN_vkTrimCommandPool = Ptr{Cvoid} -const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} -const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} -const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} -const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} -const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} -const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} -const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} - -@cenum(VkDriverId, - VK_DRIVER_ID_AMD_PROPRIETARY = 1, - VK_DRIVER_ID_AMD_OPEN_SOURCE = 2, - VK_DRIVER_ID_MESA_RADV = 3, - VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4, - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5, - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6, - VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7, - VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8, - VK_DRIVER_ID_ARM_PROPRIETARY = 9, - VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10, - VK_DRIVER_ID_GGP_PROPRIETARY = 11, - VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12, - VK_DRIVER_ID_MESA_LLVMPIPE = 13, - VK_DRIVER_ID_MOLTENVK = 14, - VK_DRIVER_ID_COREAVI_PROPRIETARY = 15, - VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1, - VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2, - VK_DRIVER_ID_MESA_RADV_KHR = 3, - VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4, - VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5, - VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6, - VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7, - VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8, - VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9, - VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10, - VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11, - VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12, - VK_DRIVER_ID_MAX_ENUM = 2147483647, -) -@cenum(VkShaderFloatControlsIndependence, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2, - VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647, -) -@cenum(VkSamplerReductionMode, - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0, - VK_SAMPLER_REDUCTION_MODE_MIN = 1, - VK_SAMPLER_REDUCTION_MODE_MAX = 2, - 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_MAX_ENUM = 2147483647, -) -@cenum(VkSemaphoreType, - VK_SEMAPHORE_TYPE_BINARY = 0, - VK_SEMAPHORE_TYPE_TIMELINE = 1, - VK_SEMAPHORE_TYPE_BINARY_KHR = 0, - VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1, - VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647, -) -@cenum(VkResolveModeFlagBits, - VK_RESOLVE_MODE_NONE = 0, - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1, - VK_RESOLVE_MODE_AVERAGE_BIT = 2, - VK_RESOLVE_MODE_MIN_BIT = 4, - VK_RESOLVE_MODE_MAX_BIT = 8, - VK_RESOLVE_MODE_NONE_KHR = 0, - VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1, - VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2, - VK_RESOLVE_MODE_MIN_BIT_KHR = 4, - VK_RESOLVE_MODE_MAX_BIT_KHR = 8, - VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkResolveModeFlags = VkFlags - -@cenum(VkDescriptorBindingFlagBits, - VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1, - VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2, - VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4, - VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8, - VK_DESCRIPTOR_BINDING_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 = 2147483647, -) - -const VkDescriptorBindingFlags = VkFlags - -@cenum(VkSemaphoreWaitFlagBits, - VK_SEMAPHORE_WAIT_ANY_BIT = 1, - VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1, - VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647, -) - -const VkSemaphoreWaitFlags = VkFlags +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end -struct VkPhysicalDeviceVulkan11Features +struct VkPipelineVertexInputDivisorStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - storageBuffer16BitAccess::VkBool32 - uniformAndStorageBuffer16BitAccess::VkBool32 - storagePushConstant16::VkBool32 - storageInputOutput16::VkBool32 - multiview::VkBool32 - multiviewGeometryShader::VkBool32 - multiviewTessellationShader::VkBool32 - variablePointersStorageBuffer::VkBool32 - variablePointers::VkBool32 - protectedMemory::VkBool32 - samplerYcbcrConversion::VkBool32 - shaderDrawParameters::VkBool32 + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} end -struct VkPhysicalDeviceVulkan11Properties +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - deviceUUID::NTuple{16, UInt8} - driverUUID::NTuple{16, UInt8} - deviceLUID::NTuple{8, UInt8} - deviceNodeMask::UInt32 - deviceLUIDValid::VkBool32 - subgroupSize::UInt32 - subgroupSupportedStages::VkShaderStageFlags - subgroupSupportedOperations::VkSubgroupFeatureFlags - subgroupQuadOperationsInAllStages::VkBool32 - pointClippingBehavior::VkPointClippingBehavior - maxMultiviewViewCount::UInt32 - maxMultiviewInstanceIndex::UInt32 - protectedNoFault::VkBool32 - maxPerSetDescriptors::UInt32 - maxMemoryAllocationSize::VkDeviceSize + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 end -struct VkPhysicalDeviceVulkan12Features - sType::VkStructureType - pNext::Ptr{Cvoid} - samplerMirrorClampToEdge::VkBool32 - drawIndirectCount::VkBool32 - storageBuffer8BitAccess::VkBool32 - uniformAndStorageBuffer8BitAccess::VkBool32 - storagePushConstant8::VkBool32 - shaderBufferInt64Atomics::VkBool32 - shaderSharedInt64Atomics::VkBool32 - shaderFloat16::VkBool32 - shaderInt8::VkBool32 - descriptorIndexing::VkBool32 - shaderInputAttachmentArrayDynamicIndexing::VkBool32 - shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 - shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 - shaderUniformBufferArrayNonUniformIndexing::VkBool32 - shaderSampledImageArrayNonUniformIndexing::VkBool32 - shaderStorageBufferArrayNonUniformIndexing::VkBool32 - shaderStorageImageArrayNonUniformIndexing::VkBool32 - shaderInputAttachmentArrayNonUniformIndexing::VkBool32 - shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 - shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 - descriptorBindingUniformBufferUpdateAfterBind::VkBool32 - descriptorBindingSampledImageUpdateAfterBind::VkBool32 - descriptorBindingStorageImageUpdateAfterBind::VkBool32 - descriptorBindingStorageBufferUpdateAfterBind::VkBool32 - descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingUpdateUnusedWhilePending::VkBool32 - descriptorBindingPartiallyBound::VkBool32 - descriptorBindingVariableDescriptorCount::VkBool32 - runtimeDescriptorArray::VkBool32 - samplerFilterMinmax::VkBool32 - scalarBlockLayout::VkBool32 - imagelessFramebuffer::VkBool32 - uniformBufferStandardLayout::VkBool32 - shaderSubgroupExtendedTypes::VkBool32 - separateDepthStencilLayouts::VkBool32 - hostQueryReset::VkBool32 - timelineSemaphore::VkBool32 - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 - vulkanMemoryModel::VkBool32 - vulkanMemoryModelDeviceScope::VkBool32 - vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 - shaderOutputViewportIndex::VkBool32 - shaderOutputLayer::VkBool32 - subgroupBroadcastDynamicId::VkBool32 +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -struct VkConformanceVersion - major::UInt8 - minor::UInt8 - subminor::UInt8 - patch::UInt8 +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 end -struct VkPhysicalDeviceVulkan12Properties +struct VkPipelineCreationFeedbackCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - driverID::VkDriverId - driverName::NTuple{256, UInt8} - driverInfo::NTuple{256, UInt8} - conformanceVersion::VkConformanceVersion - denormBehaviorIndependence::VkShaderFloatControlsIndependence - roundingModeIndependence::VkShaderFloatControlsIndependence - shaderSignedZeroInfNanPreserveFloat16::VkBool32 - shaderSignedZeroInfNanPreserveFloat32::VkBool32 - shaderSignedZeroInfNanPreserveFloat64::VkBool32 - shaderDenormPreserveFloat16::VkBool32 - shaderDenormPreserveFloat32::VkBool32 - shaderDenormPreserveFloat64::VkBool32 - shaderDenormFlushToZeroFloat16::VkBool32 - shaderDenormFlushToZeroFloat32::VkBool32 - shaderDenormFlushToZeroFloat64::VkBool32 - shaderRoundingModeRTEFloat16::VkBool32 - shaderRoundingModeRTEFloat32::VkBool32 - shaderRoundingModeRTEFloat64::VkBool32 - shaderRoundingModeRTZFloat16::VkBool32 - shaderRoundingModeRTZFloat32::VkBool32 - shaderRoundingModeRTZFloat64::VkBool32 - maxUpdateAfterBindDescriptorsInAllPools::UInt32 - shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 - shaderSampledImageArrayNonUniformIndexingNative::VkBool32 - shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 - shaderStorageImageArrayNonUniformIndexingNative::VkBool32 - shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 - robustBufferAccessUpdateAfterBind::VkBool32 - quadDivergentImplicitLod::VkBool32 - maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 - maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 - maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 - maxPerStageUpdateAfterBindResources::UInt32 - maxDescriptorSetUpdateAfterBindSamplers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindSampledImages::UInt32 - maxDescriptorSetUpdateAfterBindStorageImages::UInt32 - maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 - supportedDepthResolveModes::VkResolveModeFlags - supportedStencilResolveModes::VkResolveModeFlags - independentResolveNone::VkBool32 - independentResolve::VkBool32 - filterMinmaxSingleComponentFormats::VkBool32 - filterMinmaxImageComponentMapping::VkBool32 - maxTimelineSemaphoreValueDifference::UInt64 - framebufferIntegerColorSampleCounts::VkSampleCountFlags + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 end -struct VkImageFormatListCreateInfo +struct VkPhysicalDeviceMeshShaderFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - viewFormatCount::UInt32 - pViewFormats::Ptr{VkFormat} + taskShader::VkBool32 + meshShader::VkBool32 end -struct VkAttachmentDescription2 +struct VkPhysicalDeviceMeshShaderPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkAttachmentDescriptionFlags - format::VkFormat - samples::VkSampleCountFlagBits - loadOp::VkAttachmentLoadOp - storeOp::VkAttachmentStoreOp - stencilLoadOp::VkAttachmentLoadOp - stencilStoreOp::VkAttachmentStoreOp - initialLayout::VkImageLayout - finalLayout::VkImageLayout + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 end -struct VkAttachmentReference2 - sType::VkStructureType - pNext::Ptr{Cvoid} - attachment::UInt32 - layout::VkImageLayout - aspectMask::VkImageAspectFlags +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 end -struct VkSubpassDescription2 +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkSubpassDescriptionFlags - pipelineBindPoint::VkPipelineBindPoint - viewMask::UInt32 - inputAttachmentCount::UInt32 - pInputAttachments::Ptr{VkAttachmentReference2} - colorAttachmentCount::UInt32 - pColorAttachments::Ptr{VkAttachmentReference2} - pResolveAttachments::Ptr{VkAttachmentReference2} - pDepthStencilAttachment::Ptr{VkAttachmentReference2} - preserveAttachmentCount::UInt32 - pPreserveAttachments::Ptr{UInt32} + fragmentShaderBarycentric::VkBool32 end -struct VkSubpassDependency2 +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - srcSubpass::UInt32 - dstSubpass::UInt32 - srcStageMask::VkPipelineStageFlags - dstStageMask::VkPipelineStageFlags - srcAccessMask::VkAccessFlags - dstAccessMask::VkAccessFlags - dependencyFlags::VkDependencyFlags - viewOffset::Int32 + imageFootprint::VkBool32 end -struct VkRenderPassCreateInfo2 +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkRenderPassCreateFlags - attachmentCount::UInt32 - pAttachments::Ptr{VkAttachmentDescription2} - subpassCount::UInt32 - pSubpasses::Ptr{VkSubpassDescription2} - dependencyCount::UInt32 - pDependencies::Ptr{VkSubpassDependency2} - correlatedViewMaskCount::UInt32 - pCorrelatedViewMasks::Ptr{UInt32} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} end -struct VkSubpassBeginInfo +struct VkPhysicalDeviceExclusiveScissorFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - contents::VkSubpassContents + exclusiveScissor::VkBool32 end -struct VkSubpassEndInfo +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags end -struct VkPhysicalDevice8BitStorageFeatures +struct VkCheckpointDataNV sType::VkStructureType pNext::Ptr{Cvoid} - storageBuffer8BitAccess::VkBool32 - uniformAndStorageBuffer8BitAccess::VkBool32 - storagePushConstant8::VkBool32 + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} end -struct VkPhysicalDeviceDriverProperties +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL sType::VkStructureType pNext::Ptr{Cvoid} - driverID::VkDriverId - driverName::NTuple{256, UInt8} - driverInfo::NTuple{256, UInt8} - conformanceVersion::VkConformanceVersion + shaderIntegerFunctions2::VkBool32 end -struct VkPhysicalDeviceShaderAtomicInt64Features +const VkPerformanceConfigurationINTEL = UInt64 + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - shaderBufferInt64Atomics::VkBool32 - shaderSharedInt64Atomics::VkBool32 + pUserData::Ptr{Cvoid} end -struct VkPhysicalDeviceShaderFloat16Int8Features +struct VkQueryPoolPerformanceQueryCreateInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - shaderFloat16::VkBool32 - shaderInt8::VkBool32 + performanceCountersSampling::VkQueryPoolSamplingModeINTEL end -struct VkPhysicalDeviceFloatControlsProperties +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - denormBehaviorIndependence::VkShaderFloatControlsIndependence - roundingModeIndependence::VkShaderFloatControlsIndependence - shaderSignedZeroInfNanPreserveFloat16::VkBool32 - shaderSignedZeroInfNanPreserveFloat32::VkBool32 - shaderSignedZeroInfNanPreserveFloat64::VkBool32 - shaderDenormPreserveFloat16::VkBool32 - shaderDenormPreserveFloat32::VkBool32 - shaderDenormPreserveFloat64::VkBool32 - shaderDenormFlushToZeroFloat16::VkBool32 - shaderDenormFlushToZeroFloat32::VkBool32 - shaderDenormFlushToZeroFloat64::VkBool32 - shaderRoundingModeRTEFloat16::VkBool32 - shaderRoundingModeRTEFloat32::VkBool32 - shaderRoundingModeRTEFloat64::VkBool32 - shaderRoundingModeRTZFloat16::VkBool32 - shaderRoundingModeRTZFloat32::VkBool32 - shaderRoundingModeRTZFloat64::VkBool32 + marker::UInt64 end -struct VkDescriptorSetLayoutBindingFlagsCreateInfo +struct VkPerformanceStreamMarkerInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - bindingCount::UInt32 - pBindingFlags::Ptr{VkDescriptorBindingFlags} + marker::UInt32 end -struct VkPhysicalDeviceDescriptorIndexingFeatures +struct VkPerformanceOverrideInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - shaderInputAttachmentArrayDynamicIndexing::VkBool32 - shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 - shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 - shaderUniformBufferArrayNonUniformIndexing::VkBool32 - shaderSampledImageArrayNonUniformIndexing::VkBool32 - shaderStorageBufferArrayNonUniformIndexing::VkBool32 - shaderStorageImageArrayNonUniformIndexing::VkBool32 - shaderInputAttachmentArrayNonUniformIndexing::VkBool32 - shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 - shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 - descriptorBindingUniformBufferUpdateAfterBind::VkBool32 - descriptorBindingSampledImageUpdateAfterBind::VkBool32 - descriptorBindingStorageImageUpdateAfterBind::VkBool32 - descriptorBindingStorageBufferUpdateAfterBind::VkBool32 - descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 - descriptorBindingUpdateUnusedWhilePending::VkBool32 - descriptorBindingPartiallyBound::VkBool32 - descriptorBindingVariableDescriptorCount::VkBool32 - runtimeDescriptorArray::VkBool32 + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 end -struct VkPhysicalDeviceDescriptorIndexingProperties +struct VkPerformanceConfigurationAcquireInfoINTEL sType::VkStructureType pNext::Ptr{Cvoid} - maxUpdateAfterBindDescriptorsInAllPools::UInt32 - shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 - shaderSampledImageArrayNonUniformIndexingNative::VkBool32 - shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 - shaderStorageImageArrayNonUniformIndexingNative::VkBool32 - shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 - robustBufferAccessUpdateAfterBind::VkBool32 - quadDivergentImplicitLod::VkBool32 - maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 - maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 - maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 - maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 - maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 - maxPerStageUpdateAfterBindResources::UInt32 - maxDescriptorSetUpdateAfterBindSamplers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 - maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 - maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 - maxDescriptorSetUpdateAfterBindSampledImages::UInt32 - maxDescriptorSetUpdateAfterBindStorageImages::UInt32 - maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct VkDescriptorSetVariableDescriptorCountAllocateInfo - sType::VkStructureType - pNext::Ptr{Cvoid} - descriptorSetCount::UInt32 - pDescriptorCounts::Ptr{UInt32} +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) end -struct VkDescriptorSetVariableDescriptorCountLayoutSupport - sType::VkStructureType - pNext::Ptr{Cvoid} - maxVariableDescriptorCount::UInt32 +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) end -struct VkSubpassDescriptionDepthStencilResolve - sType::VkStructureType - pNext::Ptr{Cvoid} - depthResolveMode::VkResolveModeFlagBits - stencilResolveMode::VkResolveModeFlagBits - pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) end -struct VkPhysicalDeviceDepthStencilResolveProperties - sType::VkStructureType - pNext::Ptr{Cvoid} - supportedDepthResolveModes::VkResolveModeFlags - supportedStencilResolveModes::VkResolveModeFlags - independentResolveNone::VkBool32 - independentResolve::VkBool32 +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) end -struct VkPhysicalDeviceScalarBlockLayoutFeatures - sType::VkStructureType - pNext::Ptr{Cvoid} - scalarBlockLayout::VkBool32 +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) end -struct VkImageStencilUsageCreateInfo +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stencilUsage::VkImageUsageFlags + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 end -struct VkSamplerReductionModeCreateInfo +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD sType::VkStructureType pNext::Ptr{Cvoid} - reductionMode::VkSamplerReductionMode + localDimmingSupport::VkBool32 end -struct VkPhysicalDeviceSamplerFilterMinmaxProperties +struct VkSwapchainDisplayNativeHdrCreateInfoAMD sType::VkStructureType pNext::Ptr{Cvoid} - filterMinmaxSingleComponentFormats::VkBool32 - filterMinmaxImageComponentMapping::VkBool32 + localDimmingEnable::VkBool32 end -struct VkPhysicalDeviceVulkanMemoryModelFeatures +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - vulkanMemoryModel::VkBool32 - vulkanMemoryModelDeviceScope::VkBool32 - vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 end -struct VkPhysicalDeviceImagelessFramebufferFeatures +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - imagelessFramebuffer::VkBool32 + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 end -struct VkFramebufferAttachmentImageInfo +struct VkRenderPassFragmentDensityMapCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkImageCreateFlags - usage::VkImageUsageFlags - width::UInt32 - height::UInt32 - layerCount::UInt32 - viewFormatCount::UInt32 - pViewFormats::Ptr{VkFormat} + fragmentDensityMapAttachment::VkAttachmentReference end -struct VkFramebufferAttachmentsCreateInfo +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentImageInfoCount::UInt32 - pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 end -struct VkRenderPassAttachmentBeginInfo +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pAttachments::Ptr{VkImageView} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags end -struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - uniformBufferStandardLayout::VkBool32 + requiredSubgroupSize::UInt32 end -struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD sType::VkStructureType pNext::Ptr{Cvoid} - shaderSubgroupExtendedTypes::VkBool32 + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 end -struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD sType::VkStructureType pNext::Ptr{Cvoid} - separateDepthStencilLayouts::VkBool32 + deviceCoherentMemory::VkBool32 end -struct VkAttachmentReferenceStencilLayout +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stencilLayout::VkImageLayout + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} end -struct VkAttachmentDescriptionStencilLayout +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stencilInitialLayout::VkImageLayout - stencilFinalLayout::VkImageLayout + memoryPriority::VkBool32 end -struct VkPhysicalDeviceHostQueryResetFeatures +struct VkMemoryPriorityAllocateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - hostQueryReset::VkBool32 + priority::Cfloat end -struct VkPhysicalDeviceTimelineSemaphoreFeatures +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - timelineSemaphore::VkBool32 + dedicatedAllocationImageAliasing::VkBool32 end -struct VkPhysicalDeviceTimelineSemaphoreProperties +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - maxTimelineSemaphoreValueDifference::UInt64 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 end -struct VkSemaphoreTypeCreateInfo +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - semaphoreType::VkSemaphoreType - initialValue::UInt64 + deviceAddress::VkDeviceAddress end -struct VkTimelineSemaphoreSubmitInfo +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreValueCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValueCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} end -struct VkSemaphoreWaitInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkSemaphoreWaitFlags - semaphoreCount::UInt32 - pSemaphores::Ptr{VkSemaphore} - pValues::Ptr{UInt64} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} end -struct VkSemaphoreSignalInfo +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - value::UInt64 + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV end -struct VkPhysicalDeviceBufferDeviceAddressFeatures +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 end -struct VkBufferDeviceAddressInfo +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - buffer::VkBuffer + cooperativeMatrixSupportedStages::VkShaderStageFlags end -struct VkBufferOpaqueCaptureAddressCreateInfo +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureAddress::UInt64 + coverageReductionMode::VkBool32 end -struct VkMemoryOpaqueCaptureAddressAllocateInfo +struct VkPipelineCoverageReductionStateCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - opaqueCaptureAddress::UInt64 + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV end -struct VkDeviceMemoryOpaqueCaptureAddressInfo +struct VkFramebufferMixedSamplesCombinationNV sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags end -const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} -const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} -const PFN_vkCreateRenderPass2 = Ptr{Cvoid} -const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} -const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} -const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} -const PFN_vkResetQueryPool = Ptr{Cvoid} -const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} -const PFN_vkWaitSemaphores = Ptr{Cvoid} -const PFN_vkSignalSemaphore = Ptr{Cvoid} -const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} -const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} -const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} -const VkSurfaceKHR_T = Cvoid -const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} - -@cenum(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_MAX_ENUM_KHR = 2147483647, -) -@cenum(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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000, - VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0, - VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003, - VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647, -) -@cenum(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, -) -@cenum(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 VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} -const VkCompositeAlphaFlagsKHR = VkFlags -const VkSurfaceTransformFlagsKHR = VkFlags +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end -struct VkSurfaceCapabilitiesKHR - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 end -struct VkSurfaceFormatKHR - format::VkFormat - colorSpace::VkColorSpaceKHR +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 end -const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} -const VkSwapchainKHR_T = Cvoid -const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags -@cenum(VkSwapchainCreateFlagBitsKHR, - VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1, - VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2, - VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4, - VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end -const VkSwapchainCreateFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} -@cenum(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, -) +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end -const VkDeviceGroupPresentModeFlagsKHR = VkFlags +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end -struct VkSwapchainCreateInfoKHR +struct VkPhysicalDeviceLineRasterizationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkSwapchainCreateFlagsKHR - surface::VkSurfaceKHR - minImageCount::UInt32 - imageFormat::VkFormat - imageColorSpace::VkColorSpaceKHR - imageExtent::VkExtent2D - imageArrayLayers::UInt32 - imageUsage::VkImageUsageFlags - imageSharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} - preTransform::VkSurfaceTransformFlagBitsKHR - compositeAlpha::VkCompositeAlphaFlagBitsKHR - presentMode::VkPresentModeKHR - clipped::VkBool32 - oldSwapchain::VkSwapchainKHR + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 end -struct VkPresentInfoKHR +struct VkPhysicalDeviceLineRasterizationPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - waitSemaphoreCount::UInt32 - pWaitSemaphores::Ptr{VkSemaphore} - swapchainCount::UInt32 - pSwapchains::Ptr{VkSwapchainKHR} - pImageIndices::Ptr{UInt32} - pResults::Ptr{VkResult} + lineSubPixelPrecisionBits::UInt32 end -struct VkImageSwapchainCreateInfoKHR +struct VkPipelineRasterizationLineStateCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 end -struct VkBindImageMemorySwapchainInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - imageIndex::UInt32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) end -struct VkAcquireNextImageInfoKHR +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchain::VkSwapchainKHR - timeout::UInt64 - semaphore::VkSemaphore - fence::VkFence - deviceMask::UInt32 + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 end -struct VkDeviceGroupPresentCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - presentMask::NTuple{32, UInt32} - modes::VkDeviceGroupPresentModeFlagsKHR +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) end -struct VkDeviceGroupPresentInfoKHR +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pDeviceMasks::Ptr{UInt32} - mode::VkDeviceGroupPresentModeFlagBitsKHR + indexTypeUint8::VkBool32 end -struct VkDeviceGroupSwapchainCreateInfoKHR +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - modes::VkDeviceGroupPresentModeFlagsKHR + extendedDynamicState::VkBool32 end -const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} -const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} -const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} -const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} -const PFN_vkQueuePresentKHR = Ptr{Cvoid} -const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} -const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} -const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} -const VkDisplayKHR_T = Cvoid -const VkDisplayKHR = Ptr{VkDisplayKHR_T} -const VkDisplayModeKHR_T = Cvoid -const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} -const VkDisplayModeCreateFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -@cenum(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 void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -const VkDisplayPlaneAlphaFlagsKHR = VkFlags -const VkDisplaySurfaceCreateFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -struct VkDisplayModeParametersKHR - visibleRegion::VkExtent2D - refreshRate::UInt32 +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) end -struct VkDisplayModeCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDisplayModeCreateFlagsKHR - parameters::VkDisplayModeParametersKHR +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) end -struct VkDisplayModePropertiesKHR - displayMode::VkDisplayModeKHR - parameters::VkDisplayModeParametersKHR +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) end -struct VkDisplayPlaneCapabilitiesKHR - supportedAlpha::VkDisplayPlaneAlphaFlagsKHR - minSrcPosition::VkOffset2D - maxSrcPosition::VkOffset2D - minSrcExtent::VkExtent2D - maxSrcExtent::VkExtent2D - minDstPosition::VkOffset2D - maxDstPosition::VkOffset2D - minDstExtent::VkExtent2D - maxDstExtent::VkExtent2D +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) end -struct VkDisplayPlanePropertiesKHR - currentDisplay::VkDisplayKHR - currentStackIndex::UInt32 +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) end -struct VkDisplayPropertiesKHR - display::VkDisplayKHR - displayName::Cstring - physicalDimensions::VkExtent2D - physicalResolution::VkExtent2D - supportedTransforms::VkSurfaceTransformFlagsKHR - planeReorderPossible::VkBool32 - persistentContent::VkBool32 +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) end -struct VkDisplaySurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDisplaySurfaceCreateFlagsKHR - displayMode::VkDisplayModeKHR - planeIndex::UInt32 - planeStackIndex::UInt32 - transform::VkSurfaceTransformFlagBitsKHR - globalAlpha::Cfloat - alphaMode::VkDisplayPlaneAlphaFlagBitsKHR - imageExtent::VkExtent2D +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) end -const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} -const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} -const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} -const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} -const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} -const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end -struct VkDisplayPresentInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcRect::VkRect2D - dstRect::VkRect2D - persistent::VkBool32 +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) end -const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} -const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo -const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures -const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties -const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 -const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 -const VkFormatProperties2KHR = VkFormatProperties2 -const VkImageFormatProperties2KHR = VkImageFormatProperties2 -const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 -const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 -const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 -const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 -const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 -const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} -const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags -const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits -const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags -const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits -const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo -const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo -const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo -const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo -const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo -const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo -const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo -const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} -const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} -const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} -const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags -const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} -const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties -const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo -const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} -const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags -const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits -const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags -const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits -const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties -const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo -const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties -const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo -const VkExternalBufferPropertiesKHR = VkExternalBufferProperties -const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties -const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} -const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo -const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo -const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end -struct VkImportMemoryFdInfoKHR +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - fd::Cint + shaderDemoteToHelperInvocation::VkBool32 end -struct VkMemoryFdPropertiesKHR +const VkIndirectCommandsLayoutNV = UInt64 + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV sType::VkStructureType pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 end -struct VkMemoryGetFdInfoKHR +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits + deviceGeneratedCommands::VkBool32 end -const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} -const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} -const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags -const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits -const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags -const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits -const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo -const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties -const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} -const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags -const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits -const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo - -struct VkImportSemaphoreFdInfoKHR +struct VkGraphicsShaderGroupCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - fd::Cint + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} end -struct VkSemaphoreGetFdInfoKHR +struct VkGraphicsPipelineShaderGroupsCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} end -const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} -const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end -struct VkPhysicalDevicePushDescriptorPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPushDescriptors::UInt32 +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType end -const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} -const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} -const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features -const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features -const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end -struct VkRectLayerKHR - offset::VkOffset2D - extent::VkExtent2D - layer::UInt32 +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 end -struct VkPresentRegionKHR - rectangleCount::UInt32 - pRectangles::Ptr{VkRectLayerKHR} +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize end -struct VkPresentRegionsKHR +struct VkIndirectCommandsLayoutTokenNV sType::VkStructureType pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pRegions::Ptr{VkPresentRegionKHR} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} end -const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate -const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType -const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags -const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry -const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo -const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} -const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} -const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} -const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures -const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo -const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo -const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo -const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 -const VkAttachmentDescription2KHR = VkAttachmentDescription2 -const VkAttachmentReference2KHR = VkAttachmentReference2 -const VkSubpassDescription2KHR = VkSubpassDescription2 -const VkSubpassDependency2KHR = VkSubpassDependency2 -const VkSubpassBeginInfoKHR = VkSubpassBeginInfo -const VkSubpassEndInfoKHR = VkSubpassEndInfo -const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} -const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} -const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} -const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} - -struct VkSharedPresentSurfaceCapabilitiesKHR +struct VkIndirectCommandsLayoutCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - sharedPresentSupportedUsageFlags::VkImageUsageFlags + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} end -const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} -const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags -const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits -const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags -const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits -const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo -const VkExternalFencePropertiesKHR = VkExternalFenceProperties -const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} -const VkFenceImportFlagsKHR = VkFenceImportFlags -const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits -const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo - -struct VkImportFenceFdInfoKHR +struct VkGeneratedCommandsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - fd::Cint + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize end -struct VkFenceGetFdInfoKHR +struct VkGeneratedCommandsMemoryRequirementsInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 end -const PFN_vkImportFenceFdKHR = Ptr{Cvoid} -const PFN_vkGetFenceFdKHR = Ptr{Cvoid} +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -@cenum(VkPerformanceCounterUnitKHR, - VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0, - VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1, - VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2, - VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3, - VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4, - VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5, - VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6, - VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7, - VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8, - VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9, - VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10, - VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkPerformanceCounterScopeKHR, - VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0, - VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1, - VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2, - VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0, - VK_QUERY_SCOPE_RENDER_PASS_KHR = 1, - VK_QUERY_SCOPE_COMMAND_KHR = 2, - VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkPerformanceCounterStorageKHR, - VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0, - VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1, - VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2, - VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3, - VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4, - VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5, - VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkPerformanceCounterDescriptionFlagBitsKHR, - VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 1, - VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 2, - VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1, - VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2, - VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -const VkPerformanceCounterDescriptionFlagsKHR = VkFlags +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -@cenum(VkAcquireProfilingLockFlagBitsKHR, - VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -const VkAcquireProfilingLockFlagsKHR = VkFlags +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -struct VkPhysicalDevicePerformanceQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCounterQueryPools::VkBool32 - performanceCounterMultipleQueryPools::VkBool32 -end +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} -struct VkPhysicalDevicePerformanceQueryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - allowCommandBufferQueryCopies::VkBool32 +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) end -struct VkPerformanceCounterKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - unit::VkPerformanceCounterUnitKHR - scope::VkPerformanceCounterScopeKHR - storage::VkPerformanceCounterStorageKHR - uuid::NTuple{16, UInt8} +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) end -struct VkPerformanceCounterDescriptionKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPerformanceCounterDescriptionFlagsKHR - name::NTuple{256, UInt8} - category::NTuple{256, UInt8} - description::NTuple{256, UInt8} +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) end -struct VkQueryPoolPerformanceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - counterIndexCount::UInt32 - pCounterIndices::Ptr{UInt32} +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) end -struct VkPerformanceCounterResultKHR - int64::Int64 +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) end -struct VkAcquireProfilingLockInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAcquireProfilingLockFlagsKHR - timeout::UInt64 +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) end -struct VkPerformanceQuerySubmitInfoKHR +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - counterPassIndex::UInt32 + texelBufferAlignment::VkBool32 end -const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} -const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} -const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} -const VkPointClippingBehaviorKHR = VkPointClippingBehavior -const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin -const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties -const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo -const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference -const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo -const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo - -struct VkPhysicalDeviceSurfaceInfo2KHR +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - surface::VkSurfaceKHR + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 end -struct VkSurfaceCapabilities2KHR +struct VkRenderPassTransformBeginInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - surfaceCapabilities::VkSurfaceCapabilitiesKHR + transform::VkSurfaceTransformFlagBitsKHR end -struct VkSurfaceFormat2KHR +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM sType::VkStructureType pNext::Ptr{Cvoid} - surfaceFormat::VkSurfaceFormatKHR + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D end -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} -const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures -const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures - -struct VkDisplayProperties2KHR +struct VkPhysicalDeviceRobustness2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayProperties::VkDisplayPropertiesKHR + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 end -struct VkDisplayPlaneProperties2KHR +struct VkPhysicalDeviceRobustness2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayPlaneProperties::VkDisplayPlanePropertiesKHR + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize end -struct VkDisplayModeProperties2KHR +struct VkSamplerCustomBorderColorCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - displayModeProperties::VkDisplayModePropertiesKHR + customBorderColor::VkClearColorValue + format::VkFormat end -struct VkDisplayPlaneInfo2KHR +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - mode::VkDisplayModeKHR - planeIndex::UInt32 + maxCustomBorderColorSamplers::UInt32 end -struct VkDisplayPlaneCapabilities2KHR +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - capabilities::VkDisplayPlaneCapabilitiesKHR + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 end -const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} -const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} -const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} -const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements -const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo -const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 -const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 -const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 -const VkMemoryRequirements2KHR = VkMemoryRequirements2 -const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 -const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} -const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} -const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} -const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo -const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion -const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion -const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange -const VkChromaLocationKHR = VkChromaLocation -const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo -const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo -const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo -const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo -const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures -const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties -const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} -const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} -const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo -const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo -const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} -const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} -const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties -const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport -const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} -const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} -const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} -const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures -const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures -const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features +const VkPrivateDataSlotEXT = UInt64 -struct VkPhysicalDeviceShaderClockFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSubgroupClock::VkBool32 - shaderDeviceClock::VkBool32 +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 end -const VkDriverIdKHR = VkDriverId -const VkConformanceVersionKHR = VkConformanceVersion -const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties -const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence -const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties -const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits -const VkResolveModeFlagsKHR = VkResolveModeFlags -const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve -const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties -const VkSemaphoreTypeKHR = VkSemaphoreType -const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits -const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags -const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures -const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties -const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo -const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo -const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo -const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo -const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} -const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} -const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} -const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures +const VkPrivateDataSlotCreateFlagsEXT = VkFlags -struct VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR +struct VkPhysicalDevicePrivateDataFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - shaderTerminateInvocation::VkBool32 + privateData::VkBool32 end -@cenum(VkFragmentShadingRateCombinerOpKHR, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4, - VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 2147483647, -) - -struct VkFragmentShadingRateAttachmentInfoKHR +struct VkDevicePrivateDataCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - pFragmentShadingRateAttachment::Ptr{VkAttachmentReference2} - shadingRateAttachmentTexelSize::VkExtent2D + privateDataSlotRequestCount::UInt32 end -struct VkPipelineFragmentShadingRateStateCreateInfoKHR +struct VkPrivateDataSlotCreateInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - fragmentSize::VkExtent2D - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} + flags::VkPrivateDataSlotCreateFlagsEXT end -struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineFragmentShadingRate::VkBool32 - primitiveFragmentShadingRate::VkBool32 - attachmentFragmentShadingRate::VkBool32 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) end -struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentShadingRateAttachmentTexelSize::VkExtent2D - maxFragmentShadingRateAttachmentTexelSize::VkExtent2D - maxFragmentShadingRateAttachmentTexelSizeAspectRatio::UInt32 - primitiveFragmentShadingRateWithMultipleViewports::VkBool32 - layeredShadingRateAttachments::VkBool32 - fragmentShadingRateNonTrivialCombinerOps::VkBool32 - maxFragmentSize::VkExtent2D - maxFragmentSizeAspectRatio::UInt32 - maxFragmentShadingRateCoverageSamples::UInt32 - maxFragmentShadingRateRasterizationSamples::VkSampleCountFlagBits - fragmentShadingRateWithShaderDepthStencilWrites::VkBool32 - fragmentShadingRateWithSampleMask::VkBool32 - fragmentShadingRateWithShaderSampleMask::VkBool32 - fragmentShadingRateWithConservativeRasterization::VkBool32 - fragmentShadingRateWithFragmentShaderInterlock::VkBool32 - fragmentShadingRateWithCustomSampleLocations::VkBool32 - fragmentShadingRateStrictMultiplyCombiner::VkBool32 +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) end -struct VkPhysicalDeviceFragmentShadingRateKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleCounts::VkSampleCountFlags - fragmentSize::VkExtent2D +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) end -const PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR = Ptr{Cvoid} -const PFN_vkCmdSetFragmentShadingRateKHR = Ptr{Cvoid} +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end -struct VkSurfaceProtectedCapabilitiesKHR +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - supportsProtected::VkBool32 + pipelineCreationCacheControl::VkBool32 end -const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures -const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout -const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout -const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures -const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures -const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo -const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo -const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo -const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo -const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} -const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} -const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} -const VkDeferredOperationKHR_T = Cvoid -const VkDeferredOperationKHR = Ptr{VkDeferredOperationKHR_T} -const PFN_vkCreateDeferredOperationKHR = Ptr{Cvoid} -const PFN_vkDestroyDeferredOperationKHR = Ptr{Cvoid} -const PFN_vkGetDeferredOperationMaxConcurrencyKHR = Ptr{Cvoid} -const PFN_vkGetDeferredOperationResultKHR = Ptr{Cvoid} -const PFN_vkDeferredOperationJoinKHR = Ptr{Cvoid} - -@cenum(VkPipelineExecutableStatisticFormatKHR, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3, - VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647, -) +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end -struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV sType::VkStructureType pNext::Ptr{Cvoid} - pipelineExecutableInfo::VkBool32 + diagnosticsConfig::VkBool32 end -struct VkPipelineInfoKHR +struct VkDeviceDiagnosticsConfigCreateInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline + flags::VkDeviceDiagnosticsConfigFlagsNV end -struct VkPipelineExecutablePropertiesKHR +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - stages::VkShaderStageFlags - name::NTuple{256, UInt8} - description::NTuple{256, UInt8} - subgroupSize::UInt32 + fragmentDensityMapDeferred::VkBool32 end -struct VkPipelineExecutableInfoKHR +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT sType::VkStructureType pNext::Ptr{Cvoid} - pipeline::VkPipeline - executableIndex::UInt32 -end - -struct VkPipelineExecutableStatisticValueKHR - i64::Int64 + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 end -struct VkPipelineExecutableStatisticKHR +struct VkPhysicalDeviceImageRobustnessFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - name::NTuple{256, UInt8} - description::NTuple{256, UInt8} - format::VkPipelineExecutableStatisticFormatKHR - value::VkPipelineExecutableStatisticValueKHR + robustImageAccess::VkBool32 end -struct VkPipelineExecutableInternalRepresentationKHR +struct VkPhysicalDevice4444FormatsFeaturesEXT sType::VkStructureType pNext::Ptr{Cvoid} - name::NTuple{256, UInt8} - description::NTuple{256, UInt8} - isText::VkBool32 - dataSize::Csize_t - pData::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 end -const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} -const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} -const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} +const VkWin32SurfaceCreateFlagsKHR = VkFlags -struct VkPipelineLibraryCreateInfoKHR +struct VkWin32SurfaceCreateInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - libraryCount::UInt32 - pLibraries::Ptr{VkPipeline} + flags::VkWin32SurfaceCreateFlagsKHR + hinstance::HINSTANCE + hwnd::HWND end -const VkFlags64 = UInt64 -const VkPipelineStageFlags2KHR = VkFlags64 -const VkPipelineStageFlagBits2KHR = VkFlags64 -const VkAccessFlags2KHR = VkFlags64 -const VkAccessFlagBits2KHR = VkFlags64 +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR +const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR +const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} -@cenum(VkSubmitFlagBitsKHR, - VK_SUBMIT_PROTECTED_BIT_KHR = 1, - VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end -const VkSubmitFlagsKHR = VkFlags +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) + ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) +end -struct VkMemoryBarrier2KHR +struct VkImportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - srcStageMask::VkPipelineStageFlags2KHR - srcAccessMask::VkAccessFlags2KHR - dstStageMask::VkPipelineStageFlags2KHR - dstAccessMask::VkAccessFlags2KHR + handleType::VkExternalMemoryHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -struct VkBufferMemoryBarrier2KHR +struct VkExportMemoryWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - srcStageMask::VkPipelineStageFlags2KHR - srcAccessMask::VkAccessFlags2KHR - dstStageMask::VkPipelineStageFlags2KHR - dstAccessMask::VkAccessFlags2KHR - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -struct VkImageMemoryBarrier2KHR +struct VkMemoryWin32HandlePropertiesKHR sType::VkStructureType pNext::Ptr{Cvoid} - srcStageMask::VkPipelineStageFlags2KHR - srcAccessMask::VkAccessFlags2KHR - dstStageMask::VkPipelineStageFlags2KHR - dstAccessMask::VkAccessFlags2KHR - oldLayout::VkImageLayout - newLayout::VkImageLayout - srcQueueFamilyIndex::UInt32 - dstQueueFamilyIndex::UInt32 - image::VkImage - subresourceRange::VkImageSubresourceRange + memoryTypeBits::UInt32 end -struct VkDependencyInfoKHR +struct VkMemoryGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - dependencyFlags::VkDependencyFlags - memoryBarrierCount::UInt32 - pMemoryBarriers::Ptr{VkMemoryBarrier2KHR} - bufferMemoryBarrierCount::UInt32 - pBufferMemoryBarriers::Ptr{VkBufferMemoryBarrier2KHR} - imageMemoryBarrierCount::UInt32 - pImageMemoryBarriers::Ptr{VkImageMemoryBarrier2KHR} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR +const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR +const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) + ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) end -struct VkSemaphoreSubmitInfoKHR +struct VkWin32KeyedMutexAcquireReleaseInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - semaphore::VkSemaphore - value::UInt64 - stageMask::VkPipelineStageFlags2KHR - deviceIndex::UInt32 + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeouts::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} end -struct VkCommandBufferSubmitInfoKHR +struct VkImportSemaphoreWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - commandBuffer::VkCommandBuffer - deviceMask::UInt32 + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -struct VkSubmitInfo2KHR +struct VkExportSemaphoreWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - flags::VkSubmitFlagsKHR - waitSemaphoreInfoCount::UInt32 - pWaitSemaphoreInfos::Ptr{VkSemaphoreSubmitInfoKHR} - commandBufferInfoCount::UInt32 - pCommandBufferInfos::Ptr{VkCommandBufferSubmitInfoKHR} - signalSemaphoreInfoCount::UInt32 - pSignalSemaphoreInfos::Ptr{VkSemaphoreSubmitInfoKHR} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -struct VkPhysicalDeviceSynchronization2FeaturesKHR +struct VkD3D12FenceSubmitInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - synchronization2::VkBool32 + waitSemaphoreValuesCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValuesCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} end -struct VkQueueFamilyCheckpointProperties2NV +struct VkSemaphoreGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags2KHR + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR +const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR +const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} + +function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) + ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) +end + +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -struct VkCheckpointData2NV +struct VkImportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - stage::VkPipelineStageFlags2KHR - pCheckpointMarker::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR end -const PFN_vkCmdSetEvent2KHR = Ptr{Cvoid} -const PFN_vkCmdResetEvent2KHR = Ptr{Cvoid} -const PFN_vkCmdWaitEvents2KHR = Ptr{Cvoid} -const PFN_vkCmdPipelineBarrier2KHR = Ptr{Cvoid} -const PFN_vkCmdWriteTimestamp2KHR = Ptr{Cvoid} -const PFN_vkQueueSubmit2KHR = Ptr{Cvoid} -const PFN_vkCmdWriteBufferMarker2AMD = Ptr{Cvoid} -const PFN_vkGetQueueCheckpointData2NV = Ptr{Cvoid} - -struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR +struct VkExportFenceWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - shaderZeroInitializeWorkgroupMemory::VkBool32 + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR end -struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR +struct VkFenceGetWin32HandleInfoKHR sType::VkStructureType pNext::Ptr{Cvoid} - workgroupMemoryExplicitLayout::VkBool32 - workgroupMemoryExplicitLayoutScalarBlockLayout::VkBool32 - workgroupMemoryExplicitLayout8BitAccess::VkBool32 - workgroupMemoryExplicitLayout16BitAccess::VkBool32 + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits end -struct VkBufferCopy2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcOffset::VkDeviceSize - dstOffset::VkDeviceSize - size::VkDeviceSize +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR +const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR +const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} + +function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) + ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) end -struct VkCopyBufferInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcBuffer::VkBuffer - dstBuffer::VkBuffer - regionCount::UInt32 - pRegions::Ptr{VkBufferCopy2KHR} +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) end -struct VkImageCopy2KHR +struct VkImportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D + handleType::VkExternalMemoryHandleTypeFlagsNV + handle::HANDLE end -struct VkCopyImageInfo2KHR +struct VkExportMemoryWin32HandleInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - srcImage::VkImage - srcImageLayout::VkImageLayout - dstImage::VkImage - dstImageLayout::VkImageLayout - regionCount::UInt32 - pRegions::Ptr{VkImageCopy2KHR} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD end -struct VkBufferImageCopy2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferOffset::VkDeviceSize - bufferRowLength::UInt32 - bufferImageHeight::UInt32 - imageSubresource::VkImageSubresourceLayers - imageOffset::VkOffset3D - imageExtent::VkExtent3D +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV +const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} + +function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) + ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) end -struct VkCopyBufferToImageInfo2KHR +struct VkWin32KeyedMutexAcquireReleaseInfoNV sType::VkStructureType pNext::Ptr{Cvoid} - srcBuffer::VkBuffer - dstImage::VkImage - dstImageLayout::VkImageLayout - regionCount::UInt32 - pRegions::Ptr{VkBufferImageCopy2KHR} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeoutMilliseconds::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} end -struct VkCopyImageToBufferInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcImage::VkImage - srcImageLayout::VkImageLayout - dstBuffer::VkBuffer - regionCount::UInt32 - pRegions::Ptr{VkBufferImageCopy2KHR} +@cenum VkFullScreenExclusiveEXT::UInt32 begin + VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0 + VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1 + VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2 + VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3 + VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647 end -struct VkImageBlit2KHR +struct VkSurfaceFullScreenExclusiveInfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - srcSubresource::VkImageSubresourceLayers - srcOffsets::NTuple{2, VkOffset3D} - dstSubresource::VkImageSubresourceLayers - dstOffsets::NTuple{2, VkOffset3D} + fullScreenExclusive::VkFullScreenExclusiveEXT end -struct VkBlitImageInfo2KHR +struct VkSurfaceCapabilitiesFullScreenExclusiveEXT sType::VkStructureType pNext::Ptr{Cvoid} - srcImage::VkImage - srcImageLayout::VkImageLayout - dstImage::VkImage - dstImageLayout::VkImageLayout - regionCount::UInt32 - pRegions::Ptr{VkImageBlit2KHR} - filter::VkFilter + fullScreenExclusiveSupported::VkBool32 end -struct VkImageResolve2KHR +struct VkSurfaceFullScreenExclusiveWin32InfoEXT sType::VkStructureType pNext::Ptr{Cvoid} - srcSubresource::VkImageSubresourceLayers - srcOffset::VkOffset3D - dstSubresource::VkImageSubresourceLayers - dstOffset::VkOffset3D - extent::VkExtent3D + hmonitor::HMONITOR end -struct VkResolveImageInfo2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - srcImage::VkImage - srcImageLayout::VkImageLayout - dstImage::VkImage - dstImageLayout::VkImageLayout - regionCount::UInt32 - pRegions::Ptr{VkImageResolve2KHR} -end - -const PFN_vkCmdCopyBuffer2KHR = Ptr{Cvoid} -const PFN_vkCmdCopyImage2KHR = Ptr{Cvoid} -const PFN_vkCmdCopyBufferToImage2KHR = Ptr{Cvoid} -const PFN_vkCmdCopyImageToBuffer2KHR = Ptr{Cvoid} -const PFN_vkCmdBlitImage2KHR = Ptr{Cvoid} -const PFN_vkCmdResolveImage2KHR = Ptr{Cvoid} -const VkDebugReportCallbackEXT_T = Cvoid -const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} - -@cenum(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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000, - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, - VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28, - VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33, - 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_MAX_ENUM_EXT = 2147483647, -) -@cenum(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 VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT +const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} -const VkDebugReportFlagsEXT = VkFlags -const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT +const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} -struct VkDebugReportCallbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugReportFlagsEXT - pfnCallback::PFN_vkDebugReportCallbackEXT - pUserData::Ptr{Cvoid} -end +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT +const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} -const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} -const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} -const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT +const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} -@cenum(VkRasterizationOrderAMD, - VK_RASTERIZATION_ORDER_STRICT_AMD = 0, - VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, - VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647, -) +function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) +end -struct VkPipelineRasterizationStateRasterizationOrderAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - rasterizationOrder::VkRasterizationOrderAMD +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkDebugMarkerObjectNameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - pObjectName::Cstring +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) end -struct VkDebugMarkerObjectTagInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkDebugReportObjectTypeEXT - object::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) end -struct VkDebugMarkerMarkerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pMarkerName::Cstring - color::NTuple{4, Cfloat} -end +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 -const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} -const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} -const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} -const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} -const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" -struct VkDedicatedAllocationImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 -end +const VK_KHR_incremental_present = 1 -struct VkDedicatedAllocationBufferCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocation::VkBool32 -end +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 -struct VkDedicatedAllocationMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - image::VkImage - buffer::VkBuffer -end +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" -const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags +const VK_KHR_descriptor_update_template = 1 -struct VkPhysicalDeviceTransformFeedbackFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - transformFeedback::VkBool32 - geometryStreams::VkBool32 -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 -struct VkPhysicalDeviceTransformFeedbackPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxTransformFeedbackStreams::UInt32 - maxTransformFeedbackBuffers::UInt32 - maxTransformFeedbackBufferSize::VkDeviceSize - maxTransformFeedbackStreamDataSize::UInt32 - maxTransformFeedbackBufferDataSize::UInt32 - maxTransformFeedbackBufferDataStride::UInt32 - transformFeedbackQueries::VkBool32 - transformFeedbackStreamsLinesTriangles::VkBool32 - transformFeedbackRasterizationStreamSelect::VkBool32 - transformFeedbackDraw::VkBool32 -end +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" -struct VkPipelineRasterizationStateStreamCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationStateStreamCreateFlagsEXT - rasterizationStream::UInt32 -end +const VK_KHR_imageless_framebuffer = 1 -const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} -const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} -const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} -const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} -const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} -const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 -struct VkImageViewHandleInfoNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - imageView::VkImageView - descriptorType::VkDescriptorType - sampler::VkSampler -end +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" -struct VkImageViewAddressPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress - size::VkDeviceSize -end +const VK_KHR_create_renderpass2 = 1 -const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} -const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} -const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} -const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 -struct VkTextureLODGatherFormatPropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - supportsTextureGatherLODBiasAMD::VkBool32 -end +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" -@cenum(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_MAX_ENUM_AMD = 2147483647, -) +const VK_KHR_shared_presentable_image = 1 -struct VkShaderResourceUsageAMD - numUsedVgprs::UInt32 - numUsedSgprs::UInt32 - ldsSizePerLocalWorkGroup::UInt32 - ldsUsageSizeInBytes::Csize_t - scratchMemUsageInBytes::Csize_t -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 -struct VkShaderStatisticsInfoAMD - shaderStageMask::VkShaderStageFlags - resourceUsage::VkShaderResourceUsageAMD - numPhysicalVgprs::UInt32 - numPhysicalSgprs::UInt32 - numAvailableVgprs::UInt32 - numAvailableSgprs::UInt32 - computeWorkGroupSize::NTuple{3, UInt32} -end +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" -const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} +const VK_KHR_external_fence_capabilities = 1 -struct VkPhysicalDeviceCornerSampledImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cornerSampledImage::VkBool32 -end +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 -@cenum(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, -) +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" -const VkExternalMemoryHandleTypeFlagsNV = VkFlags +const VK_KHR_external_fence = 1 -@cenum(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, -) +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 -const VkExternalMemoryFeatureFlagsNV = VkFlags +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" -struct VkExternalImageFormatPropertiesNV - imageFormatProperties::VkImageFormatProperties - externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV - exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV - compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV -end +const VK_KHR_external_fence_fd = 1 -const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 -struct VkExternalMemoryImageCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV -end +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" -struct VkExportMemoryAllocateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleTypes::VkExternalMemoryHandleTypeFlagsNV -end +const VK_KHR_performance_query = 1 -@cenum(VkValidationCheckEXT, - VK_VALIDATION_CHECK_ALL_EXT = 0, - VK_VALIDATION_CHECK_SHADERS_EXT = 1, - VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 -struct VkValidationFlagsEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - disabledValidationCheckCount::UInt32 - pDisabledValidationChecks::Ptr{VkValidationCheckEXT} -end +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" -struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - textureCompressionASTC_HDR::VkBool32 -end +const VK_KHR_maintenance2 = 1 -struct VkImageViewASTCDecodeModeEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - decodeMode::VkFormat -end +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 -struct VkPhysicalDeviceASTCDecodeFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - decodeModeSharedExponent::VkBool32 -end +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" -@cenum(VkConditionalRenderingFlagBitsEXT, - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1, - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_get_surface_capabilities2 = 1 -const VkConditionalRenderingFlagsEXT = VkFlags +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 -struct VkConditionalRenderingBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::VkBuffer - offset::VkDeviceSize - flags::VkConditionalRenderingFlagsEXT -end +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" -struct VkPhysicalDeviceConditionalRenderingFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRendering::VkBool32 - inheritedConditionalRendering::VkBool32 -end +const VK_KHR_variable_pointers = 1 -struct VkCommandBufferInheritanceConditionalRenderingInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - conditionalRenderingEnable::VkBool32 -end +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 -const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} -const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" -struct VkViewportWScalingNV - xcoeff::Cfloat - ycoeff::Cfloat -end +const VK_KHR_get_display_properties2 = 1 -struct VkPipelineViewportWScalingStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportWScalingEnable::VkBool32 - viewportCount::UInt32 - pViewportWScalings::Ptr{VkViewportWScalingNV} -end +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 -const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} -const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" -@cenum(VkSurfaceCounterFlagBitsEXT, - VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 1, - VK_SURFACE_COUNTER_VBLANK_EXT = 1, - VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_dedicated_allocation = 1 -const VkSurfaceCounterFlagsEXT = VkFlags +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 -struct VkSurfaceCapabilities2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minImageCount::UInt32 - maxImageCount::UInt32 - currentExtent::VkExtent2D - minImageExtent::VkExtent2D - maxImageExtent::VkExtent2D - maxImageArrayLayers::UInt32 - supportedTransforms::VkSurfaceTransformFlagsKHR - currentTransform::VkSurfaceTransformFlagBitsKHR - supportedCompositeAlpha::VkCompositeAlphaFlagsKHR - supportedUsageFlags::VkImageUsageFlags - supportedSurfaceCounters::VkSurfaceCounterFlagsEXT -end +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" -const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} +const VK_KHR_storage_buffer_storage_class = 1 -@cenum(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_MAX_ENUM_EXT = 2147483647, -) -@cenum(VkDeviceEventTypeEXT, - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, - VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647, -) -@cenum(VkDisplayEventTypeEXT, - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, - VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 -struct VkDisplayPowerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - powerState::VkDisplayPowerStateEXT -end +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" -struct VkDeviceEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceEvent::VkDeviceEventTypeEXT -end +const VK_KHR_relaxed_block_layout = 1 -struct VkDisplayEventInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayEvent::VkDisplayEventTypeEXT -end +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 -struct VkSwapchainCounterCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - surfaceCounters::VkSurfaceCounterFlagsEXT -end +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" -const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} -const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} -const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} -const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} +const VK_KHR_get_memory_requirements2 = 1 -struct VkRefreshCycleDurationGOOGLE - refreshDuration::UInt64 -end +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 -struct VkPastPresentationTimingGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 - actualPresentTime::UInt64 - earliestPresentTime::UInt64 - presentMargin::UInt64 -end +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" -struct VkPresentTimeGOOGLE - presentID::UInt32 - desiredPresentTime::UInt64 -end +const VK_KHR_image_format_list = 1 -struct VkPresentTimesInfoGOOGLE - sType::VkStructureType - pNext::Ptr{Cvoid} - swapchainCount::UInt32 - pTimes::Ptr{VkPresentTimeGOOGLE} -end +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 -const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} -const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" -struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - sType::VkStructureType - pNext::Ptr{Cvoid} - perViewPositionAllComponents::VkBool32 -end +const VK_KHR_sampler_ycbcr_conversion = 1 -@cenum(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_MAX_ENUM_NV = 2147483647, -) +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 -const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" -struct VkViewportSwizzleNV - x::VkViewportCoordinateSwizzleNV - y::VkViewportCoordinateSwizzleNV - z::VkViewportCoordinateSwizzleNV - w::VkViewportCoordinateSwizzleNV -end +const VK_KHR_bind_memory2 = 1 -struct VkPipelineViewportSwizzleStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineViewportSwizzleStateCreateFlagsNV - viewportCount::UInt32 - pViewportSwizzles::Ptr{VkViewportSwizzleNV} -end +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 -@cenum(VkDiscardRectangleModeEXT, - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, - VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, - VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" -const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags +const VK_KHR_maintenance3 = 1 -struct VkPhysicalDeviceDiscardRectanglePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDiscardRectangles::UInt32 -end +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 -struct VkPipelineDiscardRectangleStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineDiscardRectangleStateCreateFlagsEXT - discardRectangleMode::VkDiscardRectangleModeEXT - discardRectangleCount::UInt32 - pDiscardRectangles::Ptr{VkRect2D} -end +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" -const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} +const VK_KHR_draw_indirect_count = 1 -@cenum(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_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 -const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" -struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - primitiveOverestimationSize::Cfloat - maxExtraPrimitiveOverestimationSize::Cfloat - extraPrimitiveOverestimationSizeGranularity::Cfloat - primitiveUnderestimation::VkBool32 - conservativePointAndLineRasterization::VkBool32 - degenerateTrianglesRasterized::VkBool32 - degenerateLinesRasterized::VkBool32 - fullyCoveredFragmentShaderInputVariable::VkBool32 - conservativeRasterizationPostDepthCoverage::VkBool32 -end +const VK_KHR_shader_subgroup_extended_types = 1 -struct VkPipelineRasterizationConservativeStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT - conservativeRasterizationMode::VkConservativeRasterizationModeEXT - extraPrimitiveOverestimationSize::Cfloat -end +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 -const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" -struct VkPhysicalDeviceDepthClipEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - depthClipEnable::VkBool32 -end +const VK_KHR_8bit_storage = 1 -struct VkPipelineRasterizationDepthClipStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT - depthClipEnable::VkBool32 -end +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 -struct VkXYColorEXT - x::Cfloat - y::Cfloat -end +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" -struct VkHdrMetadataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - displayPrimaryRed::VkXYColorEXT - displayPrimaryGreen::VkXYColorEXT - displayPrimaryBlue::VkXYColorEXT - whitePoint::VkXYColorEXT - maxLuminance::Cfloat - minLuminance::Cfloat - maxContentLightLevel::Cfloat - maxFrameAverageLightLevel::Cfloat -end +const VK_KHR_shader_atomic_int64 = 1 -const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} -const VkDebugUtilsMessengerEXT_T = Cvoid -const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} -const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 -@cenum(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, -) -@cenum(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, -) +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" -const VkDebugUtilsMessageTypeFlagsEXT = VkFlags -const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags -const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags +const VK_KHR_shader_clock = 1 -struct VkDebugUtilsLabelEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pLabelName::Cstring - color::NTuple{4, Cfloat} -end +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 -struct VkDebugUtilsObjectNameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - pObjectName::Cstring -end +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" -struct VkDebugUtilsMessengerCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCallbackDataFlagsEXT - pMessageIdName::Cstring - messageIdNumber::Int32 - pMessage::Cstring - queueLabelCount::UInt32 - pQueueLabels::Ptr{VkDebugUtilsLabelEXT} - cmdBufLabelCount::UInt32 - pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} - objectCount::UInt32 - pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} -end +const VK_KHR_driver_properties = 1 -const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 -struct VkDebugUtilsMessengerCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDebugUtilsMessengerCreateFlagsEXT - messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT - messageType::VkDebugUtilsMessageTypeFlagsEXT - pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT - pUserData::Ptr{Cvoid} -end +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" -struct VkDebugUtilsObjectTagInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - objectType::VkObjectType - objectHandle::UInt64 - tagName::UInt64 - tagSize::Csize_t - pTag::Ptr{Cvoid} -end +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE -const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} -const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} -const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} -const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} -const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} -const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} -const VkSamplerReductionModeEXT = VkSamplerReductionMode -const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo -const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE -struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - inlineUniformBlock::VkBool32 - descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 -end +const VK_KHR_shader_float_controls = 1 -struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInlineUniformBlockSize::UInt32 - maxPerStageDescriptorInlineUniformBlocks::UInt32 - maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 - maxDescriptorSetInlineUniformBlocks::UInt32 - maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 -end +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 -struct VkWriteDescriptorSetInlineUniformBlockEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - dataSize::UInt32 - pData::Ptr{Cvoid} -end +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" -struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxInlineUniformBlockBindings::UInt32 -end +const VK_KHR_depth_stencil_resolve = 1 -struct VkSampleLocationEXT - x::Cfloat - y::Cfloat -end +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 -struct VkSampleLocationsInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsPerPixel::VkSampleCountFlagBits - sampleLocationGridSize::VkExtent2D - sampleLocationsCount::UInt32 - pSampleLocations::Ptr{VkSampleLocationEXT} -end +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" -struct VkAttachmentSampleLocationsEXT - attachmentIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end +const VK_KHR_swapchain_mutable_format = 1 -struct VkSubpassSampleLocationsEXT - subpassIndex::UInt32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 -struct VkRenderPassSampleLocationsBeginInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentInitialSampleLocationsCount::UInt32 - pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} - postSubpassSampleLocationsCount::UInt32 - pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} -end +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" -struct VkPipelineSampleLocationsStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationsEnable::VkBool32 - sampleLocationsInfo::VkSampleLocationsInfoEXT -end +const VK_KHR_timeline_semaphore = 1 -struct VkPhysicalDeviceSampleLocationsPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleLocationSampleCounts::VkSampleCountFlags - maxSampleLocationGridSize::VkExtent2D - sampleLocationCoordinateRange::NTuple{2, Cfloat} - sampleLocationSubPixelBits::UInt32 - variableSampleLocations::VkBool32 -end +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 -struct VkMultisamplePropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSampleLocationGridSize::VkExtent2D -end +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" -const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} +const VK_KHR_vulkan_memory_model = 1 -@cenum(VkBlendOverlapEXT, - VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0, - VK_BLEND_OVERLAP_DISJOINT_EXT = 1, - VK_BLEND_OVERLAP_CONJOINT_EXT = 2, - VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 -struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendCoherentOperations::VkBool32 -end +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" -struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - advancedBlendMaxColorAttachments::UInt32 - advancedBlendIndependentBlend::VkBool32 - advancedBlendNonPremultipliedSrcColor::VkBool32 - advancedBlendNonPremultipliedDstColor::VkBool32 - advancedBlendCorrelatedOverlap::VkBool32 - advancedBlendAllOperations::VkBool32 -end +const VK_KHR_spirv_1_4 = 1 -struct VkPipelineColorBlendAdvancedStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - srcPremultiplied::VkBool32 - dstPremultiplied::VkBool32 - blendOverlap::VkBlendOverlapEXT -end +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 -const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" -struct VkPipelineCoverageToColorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageToColorStateCreateFlagsNV - coverageToColorEnable::VkBool32 - coverageToColorLocation::UInt32 -end +const VK_KHR_surface_protected_capabilities = 1 -@cenum(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_MAX_ENUM_NV = 2147483647, -) +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 -const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" -struct VkPipelineCoverageModulationStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageModulationStateCreateFlagsNV - coverageModulationMode::VkCoverageModulationModeNV - coverageModulationTableEnable::VkBool32 - coverageModulationTableCount::UInt32 - pCoverageModulationTable::Ptr{Cfloat} -end +const VK_KHR_separate_depth_stencil_layouts = 1 -struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMCount::UInt32 - shaderWarpsPerSM::UInt32 -end +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 -struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderSMBuiltins::VkBool32 -end +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" -struct VkDrmFormatModifierPropertiesEXT - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - drmFormatModifierTilingFeatures::VkFormatFeatureFlags -end +const VK_KHR_uniform_buffer_standard_layout = 1 -struct VkDrmFormatModifierPropertiesListEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} -end +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 -struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - sharingMode::VkSharingMode - queueFamilyIndexCount::UInt32 - pQueueFamilyIndices::Ptr{UInt32} -end +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" -struct VkImageDrmFormatModifierListCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifierCount::UInt32 - pDrmFormatModifiers::Ptr{UInt64} -end +const VK_KHR_buffer_device_address = 1 -struct VkImageDrmFormatModifierExplicitCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 - drmFormatModifierPlaneCount::UInt32 - pPlaneLayouts::Ptr{VkSubresourceLayout} -end +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 -struct VkImageDrmFormatModifierPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - drmFormatModifier::UInt64 -end +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" -const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} -const VkValidationCacheEXT_T = Cvoid -const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} +const VK_KHR_pipeline_executable_properties = 1 -@cenum(VkValidationCacheHeaderVersionEXT, - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1, - VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 -const VkValidationCacheCreateFlagsEXT = VkFlags +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" -struct VkValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkValidationCacheCreateFlagsEXT - initialDataSize::Csize_t - pInitialData::Ptr{Cvoid} -end +const VK_KHR_shader_non_semantic_info = 1 -struct VkShaderModuleValidationCacheCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - validationCache::VkValidationCacheEXT -end +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 -const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} -const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} -const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} -const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} -const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits -const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags -const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo -const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures -const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties -const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo -const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" -@cenum(VkShadingRatePaletteEntryNV, - VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0, - VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1, - VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2, - VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3, - VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10, - VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11, - VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647, -) -@cenum(VkCoarseSampleOrderTypeNV, - VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0, - VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1, - VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2, - VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3, - VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647, -) +const VK_EXT_debug_report = 1 -struct VkShadingRatePaletteNV - shadingRatePaletteEntryCount::UInt32 - pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} -end +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 -struct VkPipelineViewportShadingRateImageStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImageEnable::VkBool32 - viewportCount::UInt32 - pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} -end +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" -struct VkPhysicalDeviceShadingRateImageFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateImage::VkBool32 - shadingRateCoarseSampleOrder::VkBool32 -end +const VK_NV_glsl_shader = 1 -struct VkPhysicalDeviceShadingRateImagePropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateTexelSize::VkExtent2D - shadingRatePaletteSize::UInt32 - shadingRateMaxCoarseSamples::UInt32 -end +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 -struct VkCoarseSampleLocationNV - pixelX::UInt32 - pixelY::UInt32 - sample::UInt32 -end +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" -struct VkCoarseSampleOrderCustomNV - shadingRate::VkShadingRatePaletteEntryNV - sampleCount::UInt32 - sampleLocationCount::UInt32 - pSampleLocations::Ptr{VkCoarseSampleLocationNV} -end +const VK_EXT_depth_range_unrestricted = 1 -struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - sampleOrderType::VkCoarseSampleOrderTypeNV - customSampleOrderCount::UInt32 - pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} -end +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 -const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} -const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} -const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} -const VkAccelerationStructureNV_T = Cvoid -const VkAccelerationStructureNV = Ptr{VkAccelerationStructureNV_T} - -@cenum(VkRayTracingShaderGroupTypeKHR, - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0, - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1, - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2, - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0, - VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1, - VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2, - VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" -const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR +const VK_IMG_filter_cubic = 1 -@cenum(VkGeometryTypeKHR, - VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0, - VK_GEOMETRY_TYPE_AABBS_KHR = 1, - VK_GEOMETRY_TYPE_INSTANCES_KHR = 2, - VK_GEOMETRY_TYPE_TRIANGLES_NV = 0, - VK_GEOMETRY_TYPE_AABBS_NV = 1, - VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647, -) +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 -const VkGeometryTypeNV = VkGeometryTypeKHR +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" -@cenum(VkAccelerationStructureTypeKHR, - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0, - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1, - VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2, - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0, - VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1, - VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647, -) +const VK_AMD_rasterization_order = 1 -const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 -@cenum(VkCopyAccelerationStructureModeKHR, - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0, - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1, - VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2, - VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3, - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0, - VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1, - VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647, -) +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" -const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR +const VK_AMD_shader_trinary_minmax = 1 -@cenum(VkAccelerationStructureMemoryRequirementsTypeNV, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2, - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 2147483647, -) -@cenum(VkGeometryFlagBitsKHR, - VK_GEOMETRY_OPAQUE_BIT_KHR = 1, - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2, - VK_GEOMETRY_OPAQUE_BIT_NV = 1, - VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2, - VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 -const VkGeometryFlagsKHR = VkFlags -const VkGeometryFlagsNV = VkGeometryFlagsKHR -const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" -@cenum(VkGeometryInstanceFlagBitsKHR, - VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1, - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8, - VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1, - VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8, - VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_AMD_shader_explicit_vertex_parameter = 1 -const VkGeometryInstanceFlagsKHR = VkFlags -const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR -const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 -@cenum(VkBuildAccelerationStructureFlagBitsKHR, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8, - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1, - VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4, - VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8, - VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16, - VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" -const VkBuildAccelerationStructureFlagsKHR = VkFlags -const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR -const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR +const VK_EXT_debug_marker = 1 -struct VkRayTracingShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 -end +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 -struct VkRayTracingPipelineCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - groupCount::UInt32 - pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} - maxRecursionDepth::UInt32 - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" -struct VkGeometryTrianglesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexData::VkBuffer - vertexOffset::VkDeviceSize - vertexCount::UInt32 - vertexStride::VkDeviceSize - vertexFormat::VkFormat - indexData::VkBuffer - indexOffset::VkDeviceSize - indexCount::UInt32 - indexType::VkIndexType - transformData::VkBuffer - transformOffset::VkDeviceSize -end +const VK_AMD_gcn_shader = 1 -struct VkGeometryAABBNV - sType::VkStructureType - pNext::Ptr{Cvoid} - aabbData::VkBuffer - numAABBs::UInt32 - stride::UInt32 - offset::VkDeviceSize -end +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 -struct VkGeometryDataNV - triangles::VkGeometryTrianglesNV - aabbs::VkGeometryAABBNV -end +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" -struct VkGeometryNV - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkGeometryDataNV - flags::VkGeometryFlagsKHR -end +const VK_NV_dedicated_allocation = 1 -struct VkAccelerationStructureInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeNV - flags::VkBuildAccelerationStructureFlagsNV - instanceCount::UInt32 - geometryCount::UInt32 - pGeometries::Ptr{VkGeometryNV} -end +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 -struct VkAccelerationStructureCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - compactedSize::VkDeviceSize - info::VkAccelerationStructureInfoNV -end +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" -struct VkBindAccelerationStructureMemoryInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureNV - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - deviceIndexCount::UInt32 - pDeviceIndices::Ptr{UInt32} -end +const VK_EXT_transform_feedback = 1 -struct VkWriteDescriptorSetAccelerationStructureNV - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureNV} -end +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 -struct VkAccelerationStructureMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureMemoryRequirementsTypeNV - accelerationStructure::VkAccelerationStructureNV -end +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" -struct VkPhysicalDeviceRayTracingPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxTriangleCount::UInt64 - maxDescriptorSetAccelerationStructures::UInt32 -end +const VK_NVX_image_view_handle = 1 -struct VkTransformMatrixKHR - matrix::NTuple{3, NTuple{4, Cfloat}} -end +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 -const VkTransformMatrixNV = VkTransformMatrixKHR +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" -struct VkAabbPositionsKHR - minX::Cfloat - minY::Cfloat - minZ::Cfloat - maxX::Cfloat - maxY::Cfloat - maxZ::Cfloat -end +const VK_AMD_draw_indirect_count = 1 -const VkAabbPositionsNV = VkAabbPositionsKHR +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 -struct VkAccelerationStructureInstanceKHR - transform::VkTransformMatrixKHR - instanceCustomIndex::UInt32 - mask::UInt32 - instanceShaderBindingTableRecordOffset::UInt32 - flags::VkGeometryInstanceFlagsKHR - accelerationStructureReference::UInt64 -end +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" -const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR -const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} -const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} -const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} -const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} -const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} -const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} -const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} -const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} -const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} -const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} -const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} -const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} -const PFN_vkCompileDeferredNV = Ptr{Cvoid} +const VK_AMD_negative_viewport_height = 1 -struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTest::VkBool32 -end +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 -struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - representativeFragmentTestEnable::VkBool32 -end +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" -struct VkPhysicalDeviceImageViewImageFormatInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - imageViewType::VkImageViewType -end +const VK_AMD_gpu_shader_half_float = 1 -struct VkFilterCubicImageViewImageFormatPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - filterCubic::VkBool32 - filterCubicMinmax::VkBool32 -end +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 -@cenum(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_MAX_ENUM_EXT = 2147483647, -) +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" -struct VkDeviceQueueGlobalPriorityCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - globalPriority::VkQueueGlobalPriorityEXT -end +const VK_AMD_shader_ballot = 1 -struct VkImportMemoryHostPointerInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - pHostPointer::Ptr{Cvoid} -end +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 -struct VkMemoryHostPointerPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" -struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minImportedHostPointerAlignment::VkDeviceSize -end +const VK_AMD_texture_gather_bias_lod = 1 -const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} -const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 -@cenum(VkPipelineCompilerControlFlagBitsAMD, - VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647, -) +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" -const VkPipelineCompilerControlFlagsAMD = VkFlags +const VK_AMD_shader_info = 1 -struct VkPipelineCompilerControlCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - compilerControlFlags::VkPipelineCompilerControlFlagsAMD -end +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 -@cenum(VkTimeDomainEXT, - VK_TIME_DOMAIN_DEVICE_EXT = 0, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2, - VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3, - VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647, -) +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" -struct VkCalibratedTimestampInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - timeDomain::VkTimeDomainEXT -end +const VK_AMD_shader_image_load_store_lod = 1 -const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} -const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 -struct VkPhysicalDeviceShaderCorePropertiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderEngineCount::UInt32 - shaderArraysPerEngineCount::UInt32 - computeUnitsPerShaderArray::UInt32 - simdPerComputeUnit::UInt32 - wavefrontsPerSimd::UInt32 - wavefrontSize::UInt32 - sgprsPerSimd::UInt32 - minSgprAllocation::UInt32 - maxSgprAllocation::UInt32 - sgprAllocationGranularity::UInt32 - vgprsPerSimd::UInt32 - minVgprAllocation::UInt32 - maxVgprAllocation::UInt32 - vgprAllocationGranularity::UInt32 -end +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" -@cenum(VkMemoryOverallocationBehaviorAMD, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2, - VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647, -) +const VK_NV_corner_sampled_image = 1 -struct VkDeviceMemoryOverallocationCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - overallocationBehavior::VkMemoryOverallocationBehaviorAMD -end +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 -struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxVertexAttribDivisor::UInt32 -end +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" -struct VkVertexInputBindingDivisorDescriptionEXT - binding::UInt32 - divisor::UInt32 -end +const VK_IMG_format_pvrtc = 1 -struct VkPipelineVertexInputDivisorStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexBindingDivisorCount::UInt32 - pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} -end +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 -struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexAttributeInstanceRateDivisor::VkBool32 - vertexAttributeInstanceRateZeroDivisor::VkBool32 -end +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" -@cenum(VkPipelineCreationFeedbackFlagBitsEXT, - VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1, - VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2, - VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4, - VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_NV_external_memory_capabilities = 1 -const VkPipelineCreationFeedbackFlagsEXT = VkFlags +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 -struct VkPipelineCreationFeedbackEXT - flags::VkPipelineCreationFeedbackFlagsEXT - duration::UInt64 -end +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" -struct VkPipelineCreationFeedbackCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} - pipelineStageCreationFeedbackCount::UInt32 - pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} -end +const VK_NV_external_memory = 1 -struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - computeDerivativeGroupQuads::VkBool32 - computeDerivativeGroupLinear::VkBool32 -end +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 -struct VkPhysicalDeviceMeshShaderFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - taskShader::VkBool32 - meshShader::VkBool32 -end +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" -struct VkPhysicalDeviceMeshShaderPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxDrawMeshTasksCount::UInt32 - maxTaskWorkGroupInvocations::UInt32 - maxTaskWorkGroupSize::NTuple{3, UInt32} - maxTaskTotalMemorySize::UInt32 - maxTaskOutputCount::UInt32 - maxMeshWorkGroupInvocations::UInt32 - maxMeshWorkGroupSize::NTuple{3, UInt32} - maxMeshTotalMemorySize::UInt32 - maxMeshOutputVertices::UInt32 - maxMeshOutputPrimitives::UInt32 - maxMeshMultiviewViewCount::UInt32 - meshOutputPerVertexGranularity::UInt32 - meshOutputPerPrimitiveGranularity::UInt32 -end +const VK_EXT_validation_flags = 1 -struct VkDrawMeshTasksIndirectCommandNV - taskCount::UInt32 - firstTask::UInt32 -end +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 -const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} -const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} -const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" -struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderBarycentric::VkBool32 -end +const VK_EXT_shader_subgroup_ballot = 1 -struct VkPhysicalDeviceShaderImageFootprintFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - imageFootprint::VkBool32 -end +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 -struct VkPipelineViewportExclusiveScissorStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissorCount::UInt32 - pExclusiveScissors::Ptr{VkRect2D} -end +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" -struct VkPhysicalDeviceExclusiveScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - exclusiveScissor::VkBool32 -end +const VK_EXT_shader_subgroup_vote = 1 -const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 -struct VkQueueFamilyCheckpointPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - checkpointExecutionStageMask::VkPipelineStageFlags -end +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" -struct VkCheckpointDataNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stage::VkPipelineStageFlagBits - pCheckpointMarker::Ptr{Cvoid} -end +const VK_EXT_texture_compression_astc_hdr = 1 -const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} -const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 -struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderIntegerFunctions2::VkBool32 -end +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" -const VkPerformanceConfigurationINTEL_T = Cvoid -const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} - -@cenum(VkPerformanceConfigurationTypeINTEL, - VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0, - VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647, -) -@cenum(VkQueryPoolSamplingModeINTEL, - VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0, - VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647, -) -@cenum(VkPerformanceOverrideTypeINTEL, - VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0, - VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1, - VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647, -) -@cenum(VkPerformanceParameterTypeINTEL, - VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0, - VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1, - VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647, -) -@cenum(VkPerformanceValueTypeINTEL, - VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0, - VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1, - VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2, - VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3, - VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4, - VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647, -) +const VK_EXT_astc_decode_mode = 1 -struct VkPerformanceValueDataINTEL - value64::UInt64 -end +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 -struct VkPerformanceValueINTEL - type::VkPerformanceValueTypeINTEL - data::VkPerformanceValueDataINTEL -end +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" -struct VkInitializePerformanceApiInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - pUserData::Ptr{Cvoid} -end +const VK_EXT_conditional_rendering = 1 -struct VkQueryPoolPerformanceQueryCreateInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - performanceCountersSampling::VkQueryPoolSamplingModeINTEL -end +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 -const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" -struct VkPerformanceMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt64 -end +const VK_NV_clip_space_w_scaling = 1 -struct VkPerformanceStreamMarkerInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - marker::UInt32 -end +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 -struct VkPerformanceOverrideInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceOverrideTypeINTEL - enable::VkBool32 - parameter::UInt64 -end +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" -struct VkPerformanceConfigurationAcquireInfoINTEL - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkPerformanceConfigurationTypeINTEL -end +const VK_EXT_direct_mode_display = 1 -const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} -const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} -const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} -const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} -const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} -const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} -const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} -const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} -const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 -struct VkPhysicalDevicePCIBusInfoPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pciDomain::UInt32 - pciBus::UInt32 - pciDevice::UInt32 - pciFunction::UInt32 -end +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" -struct VkDisplayNativeHdrSurfaceCapabilitiesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingSupport::VkBool32 -end +const VK_EXT_display_surface_counter = 1 -struct VkSwapchainDisplayNativeHdrCreateInfoAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - localDimmingEnable::VkBool32 -end +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 -const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" -struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMap::VkBool32 - fragmentDensityMapDynamic::VkBool32 - fragmentDensityMapNonSubsampledImages::VkBool32 -end +const VK_EXT_display_control = 1 -struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minFragmentDensityTexelSize::VkExtent2D - maxFragmentDensityTexelSize::VkExtent2D - fragmentDensityInvocations::VkBool32 -end +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 -struct VkRenderPassFragmentDensityMapCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapAttachment::VkAttachmentReference -end +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" -const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures +const VK_GOOGLE_display_timing = 1 -struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subgroupSizeControl::VkBool32 - computeFullSubgroups::VkBool32 -end +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 -struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - minSubgroupSize::UInt32 - maxSubgroupSize::UInt32 - maxComputeWorkgroupSubgroups::UInt32 - requiredSubgroupSizeStages::VkShaderStageFlags -end +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" -struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - requiredSubgroupSize::UInt32 -end +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 -@cenum(VkShaderCorePropertiesFlagBitsAMD, - VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647, -) +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" -const VkShaderCorePropertiesFlagsAMD = VkFlags +const VK_NV_geometry_shader_passthrough = 1 -struct VkPhysicalDeviceShaderCoreProperties2AMD - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD - activeComputeUnitCount::UInt32 -end +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 -struct VkPhysicalDeviceCoherentMemoryFeaturesAMD - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceCoherentMemory::VkBool32 -end +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" -struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderImageInt64Atomics::VkBool32 - sparseImageInt64Atomics::VkBool32 -end +const VK_NV_viewport_array2 = 1 -struct VkPhysicalDeviceMemoryBudgetPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - heapBudget::NTuple{16, VkDeviceSize} - heapUsage::NTuple{16, VkDeviceSize} -end +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 -struct VkPhysicalDeviceMemoryPriorityFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryPriority::VkBool32 -end +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" -struct VkMemoryPriorityAllocateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - priority::Cfloat -end +const VK_NVX_multiview_per_view_attributes = 1 -struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - dedicatedAllocationImageAliasing::VkBool32 -end +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 -struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - bufferDeviceAddress::VkBool32 - bufferDeviceAddressCaptureReplay::VkBool32 - bufferDeviceAddressMultiDevice::VkBool32 -end +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" -const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT -const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo +const VK_NV_viewport_swizzle = 1 -struct VkBufferDeviceAddressCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceAddress::VkDeviceAddress -end +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 -const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" -@cenum(VkToolPurposeFlagBitsEXT, - VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1, - VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2, - VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4, - VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8, - VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16, - VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32, - VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64, - VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_discard_rectangles = 1 -const VkToolPurposeFlagsEXT = VkFlags +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 -struct VkPhysicalDeviceToolPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - name::NTuple{256, UInt8} - version::NTuple{256, UInt8} - purposes::VkToolPurposeFlagsEXT - description::NTuple{256, UInt8} - layer::NTuple{256, UInt8} -end +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" -const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} -const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo +const VK_EXT_conservative_rasterization = 1 -@cenum(VkValidationFeatureEnableEXT, - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0, - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1, - VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2, - VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3, - VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4, - VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647, -) -@cenum(VkValidationFeatureDisableEXT, - VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0, - VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1, - VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2, - VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3, - VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4, - VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5, - VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6, - VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 -struct VkValidationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - enabledValidationFeatureCount::UInt32 - pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} - disabledValidationFeatureCount::UInt32 - pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} -end +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" -@cenum(VkComponentTypeNV, - VK_COMPONENT_TYPE_FLOAT16_NV = 0, - VK_COMPONENT_TYPE_FLOAT32_NV = 1, - VK_COMPONENT_TYPE_FLOAT64_NV = 2, - VK_COMPONENT_TYPE_SINT8_NV = 3, - VK_COMPONENT_TYPE_SINT16_NV = 4, - VK_COMPONENT_TYPE_SINT32_NV = 5, - VK_COMPONENT_TYPE_SINT64_NV = 6, - VK_COMPONENT_TYPE_UINT8_NV = 7, - VK_COMPONENT_TYPE_UINT16_NV = 8, - VK_COMPONENT_TYPE_UINT32_NV = 9, - VK_COMPONENT_TYPE_UINT64_NV = 10, - VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647, -) -@cenum(VkScopeNV, - VK_SCOPE_DEVICE_NV = 1, - VK_SCOPE_WORKGROUP_NV = 2, - VK_SCOPE_SUBGROUP_NV = 3, - VK_SCOPE_QUEUE_FAMILY_NV = 5, - VK_SCOPE_MAX_ENUM_NV = 2147483647, -) +const VK_EXT_depth_clip_enable = 1 -struct VkCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - MSize::UInt32 - NSize::UInt32 - KSize::UInt32 - AType::VkComponentTypeNV - BType::VkComponentTypeNV - CType::VkComponentTypeNV - DType::VkComponentTypeNV - scope::VkScopeNV -end +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 -struct VkPhysicalDeviceCooperativeMatrixFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrix::VkBool32 - cooperativeMatrixRobustBufferAccess::VkBool32 -end +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" -struct VkPhysicalDeviceCooperativeMatrixPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - cooperativeMatrixSupportedStages::VkShaderStageFlags -end +const VK_EXT_swapchain_colorspace = 1 -const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 -@cenum(VkCoverageReductionModeNV, - VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0, - VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1, - VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647, -) +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" -const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags +const VK_EXT_hdr_metadata = 1 -struct VkPhysicalDeviceCoverageReductionModeFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkBool32 -end +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 -struct VkPipelineCoverageReductionStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCoverageReductionStateCreateFlagsNV - coverageReductionMode::VkCoverageReductionModeNV -end +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" -struct VkFramebufferMixedSamplesCombinationNV - sType::VkStructureType - pNext::Ptr{Cvoid} - coverageReductionMode::VkCoverageReductionModeNV - rasterizationSamples::VkSampleCountFlagBits - depthStencilSamples::VkSampleCountFlags - colorSamples::VkSampleCountFlags -end +const VK_EXT_external_memory_dma_buf = 1 -const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 -struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShaderSampleInterlock::VkBool32 - fragmentShaderPixelInterlock::VkBool32 - fragmentShaderShadingRateInterlock::VkBool32 -end +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" -struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcrImageArrays::VkBool32 -end +const VK_EXT_queue_family_foreign = 1 -@cenum(VkProvokingVertexModeEXT, - VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0, - VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1, - VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 -struct VkPhysicalDeviceProvokingVertexFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexLast::VkBool32 - transformFeedbackPreservesProvokingVertex::VkBool32 -end +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" -struct VkPhysicalDeviceProvokingVertexPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexModePerPipeline::VkBool32 - transformFeedbackPreservesTriangleFanProvokingVertex::VkBool32 -end +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 -struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - provokingVertexMode::VkProvokingVertexModeEXT -end +const VK_EXT_debug_utils = 1 -const VkHeadlessSurfaceCreateFlagsEXT = VkFlags +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 -struct VkHeadlessSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkHeadlessSurfaceCreateFlagsEXT -end +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" -const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} +const VK_EXT_sampler_filter_minmax = 1 -@cenum(VkLineRasterizationModeEXT, - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1, - VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3, - VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 -struct VkPhysicalDeviceLineRasterizationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - rectangularLines::VkBool32 - bresenhamLines::VkBool32 - smoothLines::VkBool32 - stippledRectangularLines::VkBool32 - stippledBresenhamLines::VkBool32 - stippledSmoothLines::VkBool32 -end +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" -struct VkPhysicalDeviceLineRasterizationPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineSubPixelPrecisionBits::UInt32 -end +const VK_AMD_gpu_shader_int16 = 1 -struct VkPipelineRasterizationLineStateCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - lineRasterizationMode::VkLineRasterizationModeEXT - stippledLineEnable::VkBool32 - lineStippleFactor::UInt32 - lineStipplePattern::UInt16 -end +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 -const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" -struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderBufferFloat32Atomics::VkBool32 - shaderBufferFloat32AtomicAdd::VkBool32 - shaderBufferFloat64Atomics::VkBool32 - shaderBufferFloat64AtomicAdd::VkBool32 - shaderSharedFloat32Atomics::VkBool32 - shaderSharedFloat32AtomicAdd::VkBool32 - shaderSharedFloat64Atomics::VkBool32 - shaderSharedFloat64AtomicAdd::VkBool32 - shaderImageFloat32Atomics::VkBool32 - shaderImageFloat32AtomicAdd::VkBool32 - sparseImageFloat32Atomics::VkBool32 - sparseImageFloat32AtomicAdd::VkBool32 -end +const VK_AMD_mixed_attachment_samples = 1 -const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures -const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 -struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - indexTypeUint8::VkBool32 -end +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" -struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState::VkBool32 -end +const VK_AMD_shader_fragment_mask = 1 -const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} -const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} -const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} -const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} -const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} -const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 -struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderDemoteToHelperInvocation::VkBool32 -end +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 -const VkIndirectCommandsLayoutNV_T = Cvoid -const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} - -@cenum(VkIndirectCommandsTokenTypeNV, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7, - VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647, -) -@cenum(VkIndirectStateFlagBitsNV, - VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1, - VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647, -) +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" -const VkIndirectStateFlagsNV = VkFlags +const VK_EXT_shader_stencil_export = 1 -@cenum(VkIndirectCommandsLayoutUsageFlagBitsNV, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4, - VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647, -) +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 -const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" -struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxGraphicsShaderGroupCount::UInt32 - maxIndirectSequenceCount::UInt32 - maxIndirectCommandsTokenCount::UInt32 - maxIndirectCommandsStreamCount::UInt32 - maxIndirectCommandsTokenOffset::UInt32 - maxIndirectCommandsStreamStride::UInt32 - minSequencesCountBufferOffsetAlignment::UInt32 - minSequencesIndexBufferOffsetAlignment::UInt32 - minIndirectCommandsBufferOffsetAlignment::UInt32 -end +const VK_EXT_sample_locations = 1 -struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceGeneratedCommands::VkBool32 -end +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 -struct VkGraphicsShaderGroupCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} - pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} -end +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" -struct VkGraphicsPipelineShaderGroupsCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - groupCount::UInt32 - pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} - pipelineCount::UInt32 - pPipelines::Ptr{VkPipeline} -end +const VK_EXT_blend_operation_advanced = 1 -struct VkBindShaderGroupIndirectCommandNV - groupIndex::UInt32 -end +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 -struct VkBindIndexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - indexType::VkIndexType -end +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" -struct VkBindVertexBufferIndirectCommandNV - bufferAddress::VkDeviceAddress - size::UInt32 - stride::UInt32 -end +const VK_NV_fragment_coverage_to_color = 1 -struct VkSetStateFlagsIndirectCommandNV - data::UInt32 -end +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 -struct VkIndirectCommandsStreamNV - buffer::VkBuffer - offset::VkDeviceSize -end +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" -struct VkIndirectCommandsLayoutTokenNV - sType::VkStructureType - pNext::Ptr{Cvoid} - tokenType::VkIndirectCommandsTokenTypeNV - stream::UInt32 - offset::UInt32 - vertexBindingUnit::UInt32 - vertexDynamicStride::VkBool32 - pushconstantPipelineLayout::VkPipelineLayout - pushconstantShaderStageFlags::VkShaderStageFlags - pushconstantOffset::UInt32 - pushconstantSize::UInt32 - indirectStateFlags::VkIndirectStateFlagsNV - indexTypeCount::UInt32 - pIndexTypes::Ptr{VkIndexType} - pIndexTypeValues::Ptr{UInt32} -end +const VK_NV_framebuffer_mixed_samples = 1 -struct VkIndirectCommandsLayoutCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkIndirectCommandsLayoutUsageFlagsNV - pipelineBindPoint::VkPipelineBindPoint - tokenCount::UInt32 - pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} - streamCount::UInt32 - pStreamStrides::Ptr{UInt32} -end +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 -struct VkGeneratedCommandsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - streamCount::UInt32 - pStreams::Ptr{VkIndirectCommandsStreamNV} - sequencesCount::UInt32 - preprocessBuffer::VkBuffer - preprocessOffset::VkDeviceSize - preprocessSize::VkDeviceSize - sequencesCountBuffer::VkBuffer - sequencesCountOffset::VkDeviceSize - sequencesIndexBuffer::VkBuffer - sequencesIndexOffset::VkDeviceSize -end +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" -struct VkGeneratedCommandsMemoryRequirementsInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineBindPoint::VkPipelineBindPoint - pipeline::VkPipeline - indirectCommandsLayout::VkIndirectCommandsLayoutNV - maxSequencesCount::UInt32 -end +const VK_NV_fill_rectangle = 1 -const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} -const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} -const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} -const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} -const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} -const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 -struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - inheritedViewportScissor2D::VkBool32 -end +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" -struct VkCommandBufferInheritanceViewportScissorInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - viewportScissor2D::VkBool32 - viewportDepthCount::UInt32 - pViewportDepths::Ptr{VkViewport} -end +const VK_NV_shader_sm_builtins = 1 -struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - texelBufferAlignment::VkBool32 -end +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 -struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - storageTexelBufferOffsetAlignmentBytes::VkDeviceSize - storageTexelBufferOffsetSingleTexelAlignment::VkBool32 - uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize - uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 -end +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" -struct VkRenderPassTransformBeginInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR -end +const VK_EXT_post_depth_coverage = 1 -struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR - renderArea::VkRect2D -end +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 -@cenum(VkDeviceMemoryReportEventTypeEXT, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4, - VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" -const VkDeviceMemoryReportFlagsEXT = VkFlags +const VK_EXT_image_drm_format_modifier = 1 -struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - deviceMemoryReport::VkBool32 -end +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 -struct VkDeviceMemoryReportCallbackDataEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - type::VkDeviceMemoryReportEventTypeEXT - memoryObjectId::UInt64 - size::VkDeviceSize - objectType::VkObjectType - objectHandle::UInt64 - heapIndex::UInt32 -end +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" -const PFN_vkDeviceMemoryReportCallbackEXT = Ptr{Cvoid} +const VK_EXT_validation_cache = 1 -struct VkDeviceDeviceMemoryReportCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceMemoryReportFlagsEXT - pfnUserCallback::PFN_vkDeviceMemoryReportCallbackEXT - pUserData::Ptr{Cvoid} -end +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 -struct VkPhysicalDeviceRobustness2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustBufferAccess2::VkBool32 - robustImageAccess2::VkBool32 - nullDescriptor::VkBool32 -end +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" -struct VkPhysicalDeviceRobustness2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustStorageBufferAccessSizeAlignment::VkDeviceSize - robustUniformBufferAccessSizeAlignment::VkDeviceSize -end +const VK_EXT_descriptor_indexing = 1 -struct VkSamplerCustomBorderColorCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColor::VkClearColorValue - format::VkFormat -end +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 -struct VkPhysicalDeviceCustomBorderColorPropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxCustomBorderColorSamplers::UInt32 -end +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" -struct VkPhysicalDeviceCustomBorderColorFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - customBorderColors::VkBool32 - customBorderColorWithoutFormat::VkBool32 -end +const VK_EXT_shader_viewport_index_layer = 1 -const VkPrivateDataSlotEXT_T = Cvoid -const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 -@cenum(VkPrivateDataSlotCreateFlagBitsEXT, - VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" -const VkPrivateDataSlotCreateFlagsEXT = VkFlags +const VK_NV_shading_rate_image = 1 -struct VkPhysicalDevicePrivateDataFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - privateData::VkBool32 -end +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 -struct VkDevicePrivateDataCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - privateDataSlotRequestCount::UInt32 -end +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" -struct VkPrivateDataSlotCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPrivateDataSlotCreateFlagsEXT -end +const VK_NV_ray_tracing = 1 -const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} -const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} -const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} -const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 -struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pipelineCreationCacheControl::VkBool32 -end +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" -@cenum(VkDeviceDiagnosticsConfigFlagBitsNV, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2, - VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4, - VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647, -) +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) -const VkDeviceDiagnosticsConfigFlagsNV = VkFlags +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR -struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - diagnosticsConfig::VkBool32 -end +const VK_NV_representative_fragment_test = 1 -struct VkDeviceDiagnosticsConfigCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDeviceDiagnosticsConfigFlagsNV -end +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 -@cenum(VkFragmentShadingRateTypeNV, - VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0, - VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1, - VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 2147483647, -) -@cenum(VkFragmentShadingRateNV, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9, - VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10, - VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11, - VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12, - VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13, - VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14, - VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15, - VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 2147483647, -) +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" -struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentShadingRateEnums::VkBool32 - supersampleFragmentShadingRates::VkBool32 - noInvocationFragmentShadingRates::VkBool32 -end +const VK_EXT_filter_cubic = 1 -struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV - sType::VkStructureType - pNext::Ptr{Cvoid} - maxFragmentShadingRateInvocationCount::VkSampleCountFlagBits -end +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 -struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - shadingRateType::VkFragmentShadingRateTypeNV - shadingRate::VkFragmentShadingRateNV - combinerOps::NTuple{2, VkFragmentShadingRateCombinerOpKHR} -end +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" -const PFN_vkCmdSetFragmentShadingRateEnumNV = Ptr{Cvoid} +const VK_QCOM_render_pass_shader_resolve = 1 -struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - ycbcr2plane444Formats::VkBool32 -end +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 -struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fragmentDensityMapDeferred::VkBool32 -end +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" -struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - subsampledLoads::VkBool32 - subsampledCoarseReconstructionEarlyAccess::VkBool32 - maxSubsampledArrayLayers::UInt32 - maxDescriptorSetSubsampledSamplers::UInt32 -end +const VK_EXT_global_priority = 1 -struct VkCopyCommandTransformInfoQCOM - sType::VkStructureType - pNext::Ptr{Cvoid} - transform::VkSurfaceTransformFlagBitsKHR -end +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 -struct VkPhysicalDeviceImageRobustnessFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - robustImageAccess::VkBool32 -end +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" -struct VkPhysicalDevice4444FormatsFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - formatA4R4G4B4::VkBool32 - formatA4B4G4R4::VkBool32 -end +const VK_EXT_external_memory_host = 1 -const PFN_vkAcquireWinrtDisplayNV = Ptr{Cvoid} -const PFN_vkGetWinrtDisplayNV = Ptr{Cvoid} +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 -struct VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorType::VkBool32 -end +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" -struct VkMutableDescriptorTypeListVALVE - descriptorTypeCount::UInt32 - pDescriptorTypes::Ptr{VkDescriptorType} -end +const VK_AMD_buffer_marker = 1 -struct VkMutableDescriptorTypeCreateInfoVALVE - sType::VkStructureType - pNext::Ptr{Cvoid} - mutableDescriptorTypeListCount::UInt32 - pMutableDescriptorTypeLists::Ptr{VkMutableDescriptorTypeListVALVE} -end +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 -struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexInputDynamicState::VkBool32 -end +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" -struct VkVertexInputBindingDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - binding::UInt32 - stride::UInt32 - inputRate::VkVertexInputRate - divisor::UInt32 -end +const VK_AMD_pipeline_compiler_control = 1 -struct VkVertexInputAttributeDescription2EXT - sType::VkStructureType - pNext::Ptr{Cvoid} - location::UInt32 - binding::UInt32 - format::VkFormat - offset::UInt32 -end +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 -const PFN_vkCmdSetVertexInputEXT = Ptr{Cvoid} +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" -struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - extendedDynamicState2::VkBool32 - extendedDynamicState2LogicOp::VkBool32 - extendedDynamicState2PatchControlPoints::VkBool32 -end +const VK_EXT_calibrated_timestamps = 1 -const PFN_vkCmdSetPatchControlPointsEXT = Ptr{Cvoid} -const PFN_vkCmdSetRasterizerDiscardEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetDepthBiasEnableEXT = Ptr{Cvoid} -const PFN_vkCmdSetLogicOpEXT = Ptr{Cvoid} -const PFN_vkCmdSetPrimitiveRestartEnableEXT = Ptr{Cvoid} +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 -struct VkPhysicalDeviceColorWriteEnableFeaturesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - colorWriteEnable::VkBool32 -end +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" -struct VkPipelineColorWriteCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - attachmentCount::UInt32 - pColorWriteEnables::Ptr{VkBool32} -end - -const PFN_vkCmdSetColorWriteEnableEXT = Ptr{Cvoid} -const VkAccelerationStructureKHR_T = Cvoid -const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} - -@cenum(VkBuildAccelerationStructureModeKHR, - VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0, - VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1, - VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkAccelerationStructureBuildTypeKHR, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2, - VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkAccelerationStructureCompatibilityKHR, - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0, - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1, - VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkAccelerationStructureCreateFlagBitsKHR, - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 1, - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkAccelerationStructureCreateFlagsKHR = VkFlags - -struct VkDeviceOrHostAddressKHR - deviceAddress::VkDeviceAddress -end +const VK_AMD_shader_core_properties = 1 -struct VkDeviceOrHostAddressConstKHR - deviceAddress::VkDeviceAddress -end +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 -struct VkAccelerationStructureBuildRangeInfoKHR - primitiveCount::UInt32 - primitiveOffset::UInt32 - firstVertex::UInt32 - transformOffset::UInt32 -end +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" -struct VkAccelerationStructureGeometryTrianglesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - vertexFormat::VkFormat - vertexData::VkDeviceOrHostAddressConstKHR - vertexStride::VkDeviceSize - maxVertex::UInt32 - indexType::VkIndexType - indexData::VkDeviceOrHostAddressConstKHR - transformData::VkDeviceOrHostAddressConstKHR -end +const VK_AMD_memory_overallocation_behavior = 1 -struct VkAccelerationStructureGeometryAabbsDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - data::VkDeviceOrHostAddressConstKHR - stride::VkDeviceSize -end +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 -struct VkAccelerationStructureGeometryInstancesDataKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - arrayOfPointers::VkBool32 - data::VkDeviceOrHostAddressConstKHR -end +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" -struct VkAccelerationStructureGeometryDataKHR - triangles::VkAccelerationStructureGeometryTrianglesDataKHR -end +const VK_EXT_vertex_attribute_divisor = 1 -struct VkAccelerationStructureGeometryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - geometryType::VkGeometryTypeKHR - geometry::VkAccelerationStructureGeometryDataKHR - flags::VkGeometryFlagsKHR -end +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 -struct VkAccelerationStructureBuildGeometryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkAccelerationStructureTypeKHR - flags::VkBuildAccelerationStructureFlagsKHR - mode::VkBuildAccelerationStructureModeKHR - srcAccelerationStructure::VkAccelerationStructureKHR - dstAccelerationStructure::VkAccelerationStructureKHR - geometryCount::UInt32 - pGeometries::Ptr{VkAccelerationStructureGeometryKHR} - ppGeometries::Ptr{Ptr{VkAccelerationStructureGeometryKHR}} - scratchData::VkDeviceOrHostAddressKHR -end +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" -struct VkAccelerationStructureCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - createFlags::VkAccelerationStructureCreateFlagsKHR - buffer::VkBuffer - offset::VkDeviceSize - size::VkDeviceSize - type::VkAccelerationStructureTypeKHR - deviceAddress::VkDeviceAddress -end +const VK_EXT_pipeline_creation_feedback = 1 -struct VkWriteDescriptorSetAccelerationStructureKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureCount::UInt32 - pAccelerationStructures::Ptr{VkAccelerationStructureKHR} -end +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 -struct VkPhysicalDeviceAccelerationStructureFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkBool32 - accelerationStructureCaptureReplay::VkBool32 - accelerationStructureIndirectBuild::VkBool32 - accelerationStructureHostCommands::VkBool32 - descriptorBindingAccelerationStructureUpdateAfterBind::VkBool32 -end +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" -struct VkPhysicalDeviceAccelerationStructurePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxGeometryCount::UInt64 - maxInstanceCount::UInt64 - maxPrimitiveCount::UInt64 - maxPerStageDescriptorAccelerationStructures::UInt32 - maxPerStageDescriptorUpdateAfterBindAccelerationStructures::UInt32 - maxDescriptorSetAccelerationStructures::UInt32 - maxDescriptorSetUpdateAfterBindAccelerationStructures::UInt32 - minAccelerationStructureScratchOffsetAlignment::UInt32 -end +const VK_NV_shader_subgroup_partitioned = 1 -struct VkAccelerationStructureDeviceAddressInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructure::VkAccelerationStructureKHR -end +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 -struct VkAccelerationStructureVersionInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pVersionData::Ptr{UInt8} -end +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" -struct VkCopyAccelerationStructureToMemoryInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkDeviceOrHostAddressKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_NV_compute_shader_derivatives = 1 -struct VkCopyMemoryToAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkDeviceOrHostAddressConstKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 -struct VkCopyAccelerationStructureInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - src::VkAccelerationStructureKHR - dst::VkAccelerationStructureKHR - mode::VkCopyAccelerationStructureModeKHR -end +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" -struct VkAccelerationStructureBuildSizesInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - accelerationStructureSize::VkDeviceSize - updateScratchSize::VkDeviceSize - buildScratchSize::VkDeviceSize -end +const VK_NV_mesh_shader = 1 -const PFN_vkCreateAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkCmdBuildAccelerationStructuresKHR = Ptr{Cvoid} -const PFN_vkCmdBuildAccelerationStructuresIndirectKHR = Ptr{Cvoid} -const PFN_vkBuildAccelerationStructuresKHR = Ptr{Cvoid} -const PFN_vkCopyAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -const PFN_vkCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -const PFN_vkCmdCopyAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkCmdCopyAccelerationStructureToMemoryKHR = Ptr{Cvoid} -const PFN_vkCmdCopyMemoryToAccelerationStructureKHR = Ptr{Cvoid} -const PFN_vkGetAccelerationStructureDeviceAddressKHR = Ptr{Cvoid} -const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} -const PFN_vkGetDeviceAccelerationStructureCompatibilityKHR = Ptr{Cvoid} -const PFN_vkGetAccelerationStructureBuildSizesKHR = Ptr{Cvoid} +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 -@cenum(VkShaderGroupShaderKHR, - VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0, - VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1, - VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2, - VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3, - VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 2147483647, -) +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" -struct VkRayTracingShaderGroupCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - type::VkRayTracingShaderGroupTypeKHR - generalShader::UInt32 - closestHitShader::UInt32 - anyHitShader::UInt32 - intersectionShader::UInt32 - pShaderGroupCaptureReplayHandle::Ptr{Cvoid} -end +const VK_NV_fragment_shader_barycentric = 1 -struct VkRayTracingPipelineInterfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - maxPipelineRayPayloadSize::UInt32 - maxPipelineRayHitAttributeSize::UInt32 -end +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 -struct VkRayTracingPipelineCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkPipelineCreateFlags - stageCount::UInt32 - pStages::Ptr{VkPipelineShaderStageCreateInfo} - groupCount::UInt32 - pGroups::Ptr{VkRayTracingShaderGroupCreateInfoKHR} - maxPipelineRayRecursionDepth::UInt32 - pLibraryInfo::Ptr{VkPipelineLibraryCreateInfoKHR} - pLibraryInterface::Ptr{VkRayTracingPipelineInterfaceCreateInfoKHR} - pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} - layout::VkPipelineLayout - basePipelineHandle::VkPipeline - basePipelineIndex::Int32 -end +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" -struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayTracingPipeline::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplay::VkBool32 - rayTracingPipelineShaderGroupHandleCaptureReplayMixed::VkBool32 - rayTracingPipelineTraceRaysIndirect::VkBool32 - rayTraversalPrimitiveCulling::VkBool32 -end +const VK_NV_shader_image_footprint = 1 -struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - shaderGroupHandleSize::UInt32 - maxRayRecursionDepth::UInt32 - maxShaderGroupStride::UInt32 - shaderGroupBaseAlignment::UInt32 - shaderGroupHandleCaptureReplaySize::UInt32 - maxRayDispatchInvocationCount::UInt32 - shaderGroupHandleAlignment::UInt32 - maxRayHitAttributeSize::UInt32 -end +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 -struct VkStridedDeviceAddressRegionKHR - deviceAddress::VkDeviceAddress - stride::VkDeviceSize - size::VkDeviceSize -end +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" -struct VkTraceRaysIndirectCommandKHR - width::UInt32 - height::UInt32 - depth::UInt32 -end +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" -const PFN_vkCmdTraceRaysKHR = Ptr{Cvoid} -const PFN_vkCreateRayTracingPipelinesKHR = Ptr{Cvoid} -const PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = Ptr{Cvoid} -const PFN_vkCmdTraceRaysIndirectKHR = Ptr{Cvoid} -const PFN_vkGetRayTracingShaderGroupStackSizeKHR = Ptr{Cvoid} -const PFN_vkCmdSetRayTracingPipelineStackSizeKHR = Ptr{Cvoid} +const VK_NV_device_diagnostic_checkpoints = 1 -struct VkPhysicalDeviceRayQueryFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - rayQuery::VkBool32 -end +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 -const ANativeWindow = Cvoid -const VkAndroidSurfaceCreateFlagsKHR = VkFlags +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" -struct VkAndroidSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkAndroidSurfaceCreateFlagsKHR - window::Ptr{ANativeWindow} -end +const VK_INTEL_shader_integer_functions2 = 1 -const PFN_vkCreateAndroidSurfaceKHR = Ptr{Cvoid} -const AHardwareBuffer = Cvoid +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 -struct VkAndroidHardwareBufferUsageANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - androidHardwareBufferUsage::UInt64 -end +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" -struct VkAndroidHardwareBufferPropertiesANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - allocationSize::VkDeviceSize - memoryTypeBits::UInt32 -end +const VK_INTEL_performance_query = 1 -struct VkAndroidHardwareBufferFormatPropertiesANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat - externalFormat::UInt64 - formatFeatures::VkFormatFeatureFlags - samplerYcbcrConversionComponents::VkComponentMapping - suggestedYcbcrModel::VkSamplerYcbcrModelConversion - suggestedYcbcrRange::VkSamplerYcbcrRange - suggestedXChromaOffset::VkChromaLocation - suggestedYChromaOffset::VkChromaLocation -end +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 -struct VkImportAndroidHardwareBufferInfoANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - buffer::Ptr{AHardwareBuffer} -end +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" -struct VkMemoryGetAndroidHardwareBufferInfoANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory -end +const VK_EXT_pci_bus_info = 1 -struct VkExternalFormatANDROID - sType::VkStructureType - pNext::Ptr{Cvoid} - externalFormat::UInt64 -end +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 -const PFN_vkGetAndroidHardwareBufferPropertiesANDROID = Ptr{Cvoid} -const PFN_vkGetMemoryAndroidHardwareBufferANDROID = Ptr{Cvoid} -const VkImagePipeSurfaceCreateFlagsFUCHSIA = VkFlags +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" -struct VkImagePipeSurfaceCreateInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkImagePipeSurfaceCreateFlagsFUCHSIA - imagePipeHandle::Cint -end +const VK_AMD_display_native_hdr = 1 -const PFN_vkCreateImagePipeSurfaceFUCHSIA = Ptr{Cvoid} +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 -struct VkImportMemoryZirconHandleInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - handle::Cint -end +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" -struct VkMemoryZirconHandlePropertiesFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end +const VK_EXT_fragment_density_map = 1 -struct VkMemoryGetZirconHandleInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 -const PFN_vkGetMemoryZirconHandleFUCHSIA = Ptr{Cvoid} -const PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA = Ptr{Cvoid} +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" -struct VkImportSemaphoreZirconHandleInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - zirconHandle::Cint -end +const VK_EXT_scalar_block_layout = 1 -struct VkSemaphoreGetZirconHandleInfoFUCHSIA - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 -const PFN_vkImportSemaphoreZirconHandleFUCHSIA = Ptr{Cvoid} -const PFN_vkGetSemaphoreZirconHandleFUCHSIA = Ptr{Cvoid} -const VkIOSSurfaceCreateFlagsMVK = VkFlags +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" -struct VkIOSSurfaceCreateInfoMVK - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkIOSSurfaceCreateFlagsMVK - pView::Ptr{Cvoid} -end +const VK_GOOGLE_hlsl_functionality1 = 1 -const PFN_vkCreateIOSSurfaceMVK = Ptr{Cvoid} -const VkMacOSSurfaceCreateFlagsMVK = VkFlags +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 -struct VkMacOSSurfaceCreateInfoMVK - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMacOSSurfaceCreateFlagsMVK - pView::Ptr{Cvoid} -end +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" -const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} -const CAMetalLayer = Cvoid -const VkMetalSurfaceCreateFlagsEXT = VkFlags +const VK_GOOGLE_decorate_string = 1 -struct VkMetalSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkMetalSurfaceCreateFlagsEXT - pLayer::Ptr{CAMetalLayer} -end +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 -const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} -const VkViSurfaceCreateFlagsNN = VkFlags +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" -struct VkViSurfaceCreateInfoNN - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkViSurfaceCreateFlagsNN - window::Ptr{Cvoid} -end +const VK_EXT_subgroup_size_control = 1 -const PFN_vkCreateViSurfaceNN = Ptr{Cvoid} -const VkWaylandSurfaceCreateFlagsKHR = VkFlags +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 -struct VkWaylandSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWaylandSurfaceCreateFlagsKHR - display::Ptr{wl_display} - surface::Ptr{wl_surface} -end +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" -const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} -const VkWin32SurfaceCreateFlagsKHR = VkFlags +const VK_AMD_shader_core_properties2 = 1 -struct VkWin32SurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkWin32SurfaceCreateFlagsKHR - hinstance::Cint - hwnd::Cint -end +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 -const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" -struct VkImportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagBits - handle::Cint - name::Cint -end +const VK_AMD_device_coherent_memory = 1 -struct VkExportMemoryWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 -struct VkMemoryWin32HandlePropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryTypeBits::UInt32 -end +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" -struct VkMemoryGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memory::VkDeviceMemory - handleType::VkExternalMemoryHandleTypeFlagBits -end +const VK_EXT_memory_budget = 1 -const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} -const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 -struct VkWin32KeyedMutexAcquireReleaseInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - acquireCount::UInt32 - pAcquireSyncs::Ptr{VkDeviceMemory} - pAcquireKeys::Ptr{UInt64} - pAcquireTimeouts::Ptr{UInt32} - releaseCount::UInt32 - pReleaseSyncs::Ptr{VkDeviceMemory} - pReleaseKeys::Ptr{UInt64} -end +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" -struct VkImportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - flags::VkSemaphoreImportFlags - handleType::VkExternalSemaphoreHandleTypeFlagBits - handle::Cint - name::Cint -end +const VK_EXT_memory_priority = 1 -struct VkExportSemaphoreWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 -struct VkD3D12FenceSubmitInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - waitSemaphoreValuesCount::UInt32 - pWaitSemaphoreValues::Ptr{UInt64} - signalSemaphoreValuesCount::UInt32 - pSignalSemaphoreValues::Ptr{UInt64} -end +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" -struct VkSemaphoreGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - semaphore::VkSemaphore - handleType::VkExternalSemaphoreHandleTypeFlagBits -end +const VK_NV_dedicated_allocation_image_aliasing = 1 -const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} -const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 -struct VkImportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - flags::VkFenceImportFlags - handleType::VkExternalFenceHandleTypeFlagBits - handle::Cint - name::Cint -end +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" -struct VkExportFenceWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint - name::Cint -end +const VK_EXT_buffer_device_address = 1 -struct VkFenceGetWin32HandleInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - fence::VkFence - handleType::VkExternalFenceHandleTypeFlagBits -end +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 -const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} -const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" -struct VkImportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - handleType::VkExternalMemoryHandleTypeFlagsNV - handle::Cint -end +const VK_EXT_tooling_info = 1 -struct VkExportMemoryWin32HandleInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - pAttributes::Ptr{Cint} - dwAccess::Cint -end +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 -const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" -struct VkWin32KeyedMutexAcquireReleaseInfoNV - sType::VkStructureType - pNext::Ptr{Cvoid} - acquireCount::UInt32 - pAcquireSyncs::Ptr{VkDeviceMemory} - pAcquireKeys::Ptr{UInt64} - pAcquireTimeoutMilliseconds::Ptr{UInt32} - releaseCount::UInt32 - pReleaseSyncs::Ptr{VkDeviceMemory} - pReleaseKeys::Ptr{UInt64} -end +const VK_EXT_separate_stencil_usage = 1 -@cenum(VkFullScreenExclusiveEXT, - VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0, - VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1, - VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2, - VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3, - VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 -struct VkSurfaceFullScreenExclusiveInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusive::VkFullScreenExclusiveEXT -end +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" -struct VkSurfaceCapabilitiesFullScreenExclusiveEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - fullScreenExclusiveSupported::VkBool32 -end +const VK_EXT_validation_features = 1 -struct VkSurfaceFullScreenExclusiveWin32InfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - hmonitor::Cint -end +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 -const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} -const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} -const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} -const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} -const VkXcbSurfaceCreateFlagsKHR = VkFlags +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" -struct VkXcbSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXcbSurfaceCreateFlagsKHR - connection::Ptr{xcb_connection_t} - window::xcb_window_t -end +const VK_NV_cooperative_matrix = 1 -const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} -const VkXlibSurfaceCreateFlagsKHR = VkFlags +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 -struct VkXlibSurfaceCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkXlibSurfaceCreateFlagsKHR - dpy::Ptr{Display} - window::Window -end +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" -const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} -const VkDirectFBSurfaceCreateFlagsEXT = VkFlags +const VK_NV_coverage_reduction_mode = 1 -struct VkDirectFBSurfaceCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkDirectFBSurfaceCreateFlagsEXT - dfb::Ptr{Cint} - surface::Ptr{Cint} -end +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 -const PFN_vkCreateDirectFBSurfaceEXT = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT = Ptr{Cvoid} -const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} -const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} -const VkStreamDescriptorSurfaceCreateFlagsGGP = VkFlags +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" -struct VkStreamDescriptorSurfaceCreateInfoGGP - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkStreamDescriptorSurfaceCreateFlagsGGP - streamDescriptor::Cint -end +const VK_EXT_fragment_shader_interlock = 1 -const PFN_vkCreateStreamDescriptorSurfaceGGP = Ptr{Cvoid} +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 -struct VkPresentFrameTokenGGP - sType::VkStructureType - pNext::Ptr{Cvoid} - frameToken::Cint -end +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" -const VkScreenSurfaceCreateFlagsQNX = VkFlags +const VK_EXT_ycbcr_image_arrays = 1 -struct VkScreenSurfaceCreateInfoQNX - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkScreenSurfaceCreateFlagsQNX - context::Ptr{_screen_context} - window::Ptr{_screen_window} -end +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 -const PFN_vkCreateScreenSurfaceQNX = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX = Ptr{Cvoid} -const VkVideoSessionKHR_T = Cvoid -const VkVideoSessionKHR = Ptr{VkVideoSessionKHR_T} -const VkVideoSessionParametersKHR_T = Cvoid -const VkVideoSessionParametersKHR = Ptr{VkVideoSessionParametersKHR_T} +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" -@cenum(VkQueryResultStatusKHR{Int32}, - VK_QUERY_RESULT_STATUS_ERROR_KHR = -1, - VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0, - VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1, - VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 2147483647, -) -@cenum(VkVideoCodecOperationFlagBitsKHR, - VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR = 0, - VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT = 65536, - VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_EXT = 1, - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_EXT = 2, - VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_headless_surface = 1 -const VkVideoCodecOperationFlagsKHR = VkFlags +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 -@cenum(VkVideoChromaSubsamplingFlagBitsKHR, - VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_BIT_KHR = 0, - VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 1, - VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 2, - VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 4, - VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 8, - VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" -const VkVideoChromaSubsamplingFlagsKHR = VkFlags +const VK_EXT_line_rasterization = 1 -@cenum(VkVideoComponentBitDepthFlagBitsKHR, - VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0, - VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 1, - VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 4, - VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 16, - VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 -const VkVideoComponentBitDepthFlagsKHR = VkFlags +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" -@cenum(VkVideoCapabilitiesFlagBitsKHR, - VK_VIDEO_CAPABILITIES_PROTECTED_CONTENT_BIT_KHR = 1, - VK_VIDEO_CAPABILITIES_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 2, - VK_VIDEO_CAPABILITIES_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_shader_atomic_float = 1 -const VkVideoCapabilitiesFlagsKHR = VkFlags +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 -@cenum(VkVideoSessionCreateFlagBitsKHR, - VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0, - VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 1, - VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" -const VkVideoSessionCreateFlagsKHR = VkFlags -const VkVideoBeginCodingFlagsKHR = VkFlags -const VkVideoEndCodingFlagsKHR = VkFlags +const VK_EXT_host_query_reset = 1 -@cenum(VkVideoCodingControlFlagBitsKHR, - VK_VIDEO_CODING_CONTROL_DEFAULT_KHR = 0, - VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 1, - VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 -const VkVideoCodingControlFlagsKHR = VkFlags +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" -@cenum(VkVideoCodingQualityPresetFlagBitsKHR, - VK_VIDEO_CODING_QUALITY_PRESET_DEFAULT_BIT_KHR = 0, - VK_VIDEO_CODING_QUALITY_PRESET_NORMAL_BIT_KHR = 1, - VK_VIDEO_CODING_QUALITY_PRESET_POWER_BIT_KHR = 2, - VK_VIDEO_CODING_QUALITY_PRESET_QUALITY_BIT_KHR = 4, - VK_VIDEO_CODING_QUALITY_PRESET_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_index_type_uint8 = 1 -const VkVideoCodingQualityPresetFlagsKHR = VkFlags +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 -struct VkVideoQueueFamilyProperties2KHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperations::VkVideoCodecOperationFlagsKHR -end +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" -struct VkVideoProfileKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoCodecOperation::VkVideoCodecOperationFlagBitsKHR - chromaSubsampling::VkVideoChromaSubsamplingFlagsKHR - lumaBitDepth::VkVideoComponentBitDepthFlagsKHR - chromaBitDepth::VkVideoComponentBitDepthFlagsKHR -end +const VK_EXT_extended_dynamic_state = 1 -struct VkVideoProfilesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - profileCount::UInt32 - pProfiles::Ptr{VkVideoProfileKHR} -end +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 -struct VkVideoCapabilitiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - capabilityFlags::VkVideoCapabilitiesFlagsKHR - minBitstreamBufferOffsetAlignment::VkDeviceSize - minBitstreamBufferSizeAlignment::VkDeviceSize - videoPictureExtentGranularity::VkExtent2D - minExtent::VkExtent2D - maxExtent::VkExtent2D - maxReferencePicturesSlotsCount::UInt32 - maxReferencePicturesActiveCount::UInt32 -end +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" -struct VkPhysicalDeviceVideoFormatInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - imageUsage::VkImageUsageFlags - pVideoProfiles::Ptr{VkVideoProfilesKHR} -end +const VK_EXT_shader_demote_to_helper_invocation = 1 -struct VkVideoFormatPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - format::VkFormat -end +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 -struct VkVideoPictureResourceKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - codedOffset::VkOffset2D - codedExtent::VkExtent2D - baseArrayLayer::UInt32 - imageViewBinding::VkImageView -end +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" -struct VkVideoReferenceSlotKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int8 - pPictureResource::Ptr{VkVideoPictureResourceKHR} -end +const VK_NV_device_generated_commands = 1 -struct VkVideoGetMemoryPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - pMemoryRequirements::Ptr{VkMemoryRequirements2} -end +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 -struct VkVideoBindMemoryKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - memoryBindIndex::UInt32 - memory::VkDeviceMemory - memoryOffset::VkDeviceSize - memorySize::VkDeviceSize -end +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" -struct VkVideoSessionCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - queueFamilyIndex::UInt32 - flags::VkVideoSessionCreateFlagsKHR - pVideoProfile::Ptr{VkVideoProfileKHR} - pictureFormat::VkFormat - maxCodedExtent::VkExtent2D - referencePicturesFormat::VkFormat - maxReferencePicturesSlotsCount::UInt32 - maxReferencePicturesActiveCount::UInt32 -end +const VK_EXT_texel_buffer_alignment = 1 -struct VkVideoSessionParametersCreateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - videoSessionParametersTemplate::VkVideoSessionParametersKHR - videoSession::VkVideoSessionKHR -end +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 -struct VkVideoSessionParametersUpdateInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - updateSequenceCount::UInt32 -end +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" -struct VkVideoBeginCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoBeginCodingFlagsKHR - codecQualityPreset::VkVideoCodingQualityPresetFlagsKHR - videoSession::VkVideoSessionKHR - videoSessionParameters::VkVideoSessionParametersKHR - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotKHR} -end +const VK_QCOM_render_pass_transform = 1 -struct VkVideoEndCodingInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEndCodingFlagsKHR -end +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 -struct VkVideoCodingControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoCodingControlFlagsKHR -end +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 -const PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR = Ptr{Cvoid} -const PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR = Ptr{Cvoid} -const PFN_vkCreateVideoSessionKHR = Ptr{Cvoid} -const PFN_vkDestroyVideoSessionKHR = Ptr{Cvoid} -const PFN_vkGetVideoSessionMemoryRequirementsKHR = Ptr{Cvoid} -const PFN_vkBindVideoSessionMemoryKHR = Ptr{Cvoid} -const PFN_vkCreateVideoSessionParametersKHR = Ptr{Cvoid} -const PFN_vkUpdateVideoSessionParametersKHR = Ptr{Cvoid} -const PFN_vkDestroyVideoSessionParametersKHR = Ptr{Cvoid} -const PFN_vkCmdBeginVideoCodingKHR = Ptr{Cvoid} -const PFN_vkCmdEndVideoCodingKHR = Ptr{Cvoid} -const PFN_vkCmdControlVideoCodingKHR = Ptr{Cvoid} +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 -@cenum(VkVideoDecodeFlagBitsKHR, - VK_VIDEO_DECODE_DEFAULT_KHR = 0, - VK_VIDEO_DECODE_RESERVED_0_BIT_KHR = 1, - VK_VIDEO_DECODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" -const VkVideoDecodeFlagsKHR = VkFlags +const VK_EXT_custom_border_color = 1 -struct VkVideoDecodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeFlagsKHR - codedOffset::VkOffset2D - codedExtent::VkExtent2D - srcBuffer::VkBuffer - srcBufferOffset::VkDeviceSize - srcBufferRange::VkDeviceSize - dstPictureResource::VkVideoPictureResourceKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotKHR} -end +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 -const PFN_vkCmdDecodeVideoKHR = Ptr{Cvoid} +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" -struct VkPhysicalDevicePortabilitySubsetFeaturesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - constantAlphaColorBlendFactors::VkBool32 - events::VkBool32 - imageViewFormatReinterpretation::VkBool32 - imageViewFormatSwizzle::VkBool32 - imageView2DOn3DImage::VkBool32 - multisampleArrayImage::VkBool32 - mutableComparisonSamplers::VkBool32 - pointPolygons::VkBool32 - samplerMipLodBias::VkBool32 - separateStencilMaskRef::VkBool32 - shaderSampleRateInterpolationFunctions::VkBool32 - tessellationIsolines::VkBool32 - tessellationPointMode::VkBool32 - triangleFans::VkBool32 - vertexAttributeAccessBeyondStride::VkBool32 -end +const VK_GOOGLE_user_type = 1 -struct VkPhysicalDevicePortabilitySubsetPropertiesKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - minVertexInputBindingStrideAlignment::UInt32 -end +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 -@cenum(VkVideoEncodeFlagBitsKHR, - VK_VIDEO_ENCODE_DEFAULT_KHR = 0, - VK_VIDEO_ENCODE_RESERVED_0_BIT_KHR = 1, - VK_VIDEO_ENCODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoEncodeFlagsKHR = VkFlags - -@cenum(VkVideoEncodeRateControlFlagBitsKHR, - VK_VIDEO_ENCODE_RATE_CONTROL_DEFAULT_KHR = 0, - VK_VIDEO_ENCODE_RATE_CONTROL_RESET_BIT_KHR = 1, - VK_VIDEO_ENCODE_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoEncodeRateControlFlagsKHR = VkFlags - -@cenum(VkVideoEncodeRateControlModeFlagBitsKHR, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR = 0, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 1, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 2, - VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 2147483647, -) - -const VkVideoEncodeRateControlModeFlagsKHR = VkFlags - -struct VkVideoEncodeInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEncodeFlagsKHR - qualityLevel::UInt32 - codedExtent::VkExtent2D - dstBitstreamBuffer::VkBuffer - dstBitstreamBufferOffset::VkDeviceSize - dstBitstreamBufferMaxRange::VkDeviceSize - srcPictureResource::VkVideoPictureResourceKHR - pSetupReferenceSlot::Ptr{VkVideoReferenceSlotKHR} - referenceSlotCount::UInt32 - pReferenceSlots::Ptr{VkVideoReferenceSlotKHR} -end - -struct VkVideoEncodeRateControlInfoKHR - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEncodeRateControlFlagsKHR - rateControlMode::VkVideoEncodeRateControlModeFlagBitsKHR - averageBitrate::UInt32 - peakToAverageBitrateRatio::UInt16 - frameRateNumerator::UInt16 - frameRateDenominator::UInt16 - virtualBufferSizeInMs::UInt32 -end - -const PFN_vkCmdEncodeVideoKHR = Ptr{Cvoid} - -@cenum(StdVideoH264ChromaFormatIdc, - std_video_h264_chroma_format_idc_monochrome = 0, - std_video_h264_chroma_format_idc_420 = 1, - std_video_h264_chroma_format_idc_422 = 2, - std_video_h264_chroma_format_idc_444 = 3, -) -@cenum(StdVideoH264ProfileIdc, - std_video_h264_profile_idc_baseline = 66, - std_video_h264_profile_idc_main = 77, - std_video_h264_profile_idc_high = 100, - std_video_h264_profile_idc_high_444_predictive = 244, - std_video_h264_profile_idc_invalid = 2147483647, -) -@cenum(StdVideoH264Level, - std_video_h264_level_1_0 = 0, - std_video_h264_level_1_1 = 1, - std_video_h264_level_1_2 = 2, - std_video_h264_level_1_3 = 3, - std_video_h264_level_2_0 = 4, - std_video_h264_level_2_1 = 5, - std_video_h264_level_2_2 = 6, - std_video_h264_level_3_0 = 7, - std_video_h264_level_3_1 = 8, - std_video_h264_level_3_2 = 9, - std_video_h264_level_4_0 = 10, - std_video_h264_level_4_1 = 11, - std_video_h264_level_4_2 = 12, - std_video_h264_level_5_0 = 13, - std_video_h264_level_5_1 = 14, - std_video_h264_level_5_2 = 15, - std_video_h264_level_6_0 = 16, - std_video_h264_level_6_1 = 17, - std_video_h264_level_6_2 = 18, - std_video_h264_level_invalid = 2147483647, -) -@cenum(StdVideoH264PocType, - std_video_h264_poc_type_0 = 0, - std_video_h264_poc_type_1 = 1, - std_video_h264_poc_type_2 = 2, - std_video_h264_poc_type_invalid = 2147483647, -) -@cenum(StdVideoH264AspectRatioIdc, - std_video_h264_aspect_ratio_idc_unspecified = 0, - std_video_h264_aspect_ratio_idc_square = 1, - std_video_h264_aspect_ratio_idc_12_11 = 2, - std_video_h264_aspect_ratio_idc_10_11 = 3, - std_video_h264_aspect_ratio_idc_16_11 = 4, - std_video_h264_aspect_ratio_idc_40_33 = 5, - std_video_h264_aspect_ratio_idc_24_11 = 6, - std_video_h264_aspect_ratio_idc_20_11 = 7, - std_video_h264_aspect_ratio_idc_32_11 = 8, - std_video_h264_aspect_ratio_idc_80_33 = 9, - std_video_h264_aspect_ratio_idc_18_11 = 10, - std_video_h264_aspect_ratio_idc_15_11 = 11, - std_video_h264_aspect_ratio_idc_64_33 = 12, - std_video_h264_aspect_ratio_idc_160_99 = 13, - std_video_h264_aspect_ratio_idc_4_3 = 14, - std_video_h264_aspect_ratio_idc_3_2 = 15, - std_video_h264_aspect_ratio_idc_2_1 = 16, - std_video_h264_aspect_ratio_idc_extended_sar = 255, - std_video_h264_aspect_ratio_idc_invalid = 2147483647, -) -@cenum(StdVideoH264WeightedBiPredIdc, - std_video_h264_default_weighted_b_slices_prediction_idc = 0, - std_video_h264_explicit_weighted_b_slices_prediction_idc = 1, - std_video_h264_implicit_weighted_b_slices_prediction_idc = 2, - std_video_h264_invalid_weighted_b_slices_prediction_idc = 2147483647, -) -@cenum(StdVideoH264ModificationOfPicNumsIdc, - std_video_h264_modification_of_pic_nums_idc_short_term_subtract = 0, - std_video_h264_modification_of_pic_nums_idc_short_term_add = 1, - std_video_h264_modification_of_pic_nums_idc_long_term = 2, - std_video_h264_modification_of_pic_nums_idc_end = 3, - std_video_h264_modification_of_pic_nums_idc_invalid = 2147483647, -) -@cenum(StdVideoH264MemMgmtControlOp, - std_video_h264_mem_mgmt_control_op_end = 0, - std_video_h264_mem_mgmt_control_op_unmark_short_term = 1, - std_video_h264_mem_mgmt_control_op_unmark_long_term = 2, - std_video_h264_mem_mgmt_control_op_mark_long_term = 3, - std_video_h264_mem_mgmt_control_op_set_max_long_term_index = 4, - std_video_h264_mem_mgmt_control_op_unmark_all = 5, - std_video_h264_mem_mgmt_control_op_mark_current_as_long_term = 6, - std_video_h264_mem_mgmt_control_op_invalid = 2147483647, -) -@cenum(StdVideoH264CabacInitIdc, - std_video_h264_cabac_init_idc_0 = 0, - std_video_h264_cabac_init_idc_1 = 1, - std_video_h264_cabac_init_idc_2 = 2, - std_video_h264_cabac_init_idc_invalid = 2147483647, -) -@cenum(StdVideoH264DisableDeblockingFilterIdc, - std_video_h264_disable_deblocking_filter_idc_disabled = 0, - std_video_h264_disable_deblocking_filter_idc_enabled = 1, - std_video_h264_disable_deblocking_filter_idc_partial = 2, - std_video_h264_disable_deblocking_filter_idc_invalid = 2147483647, -) -@cenum(StdVideoH264PictureType, - std_video_h264_picture_type_i = 0, - std_video_h264_picture_type_p = 1, - std_video_h264_picture_type_b = 2, - std_video_h264_picture_type_invalid = 2147483647, -) -@cenum(StdVideoH264SliceType, - std_video_h264_slice_type_i = 0, - std_video_h264_slice_type_p = 1, - std_video_h264_slice_type_b = 2, - std_video_h264_slice_type_invalid = 2147483647, -) -@cenum(StdVideoH264NonVclNaluType, - std_video_h264_non_vcl_nalu_type_sps = 0, - std_video_h264_non_vcl_nalu_type_pps = 1, - std_video_h264_non_vcl_nalu_type_aud = 2, - std_video_h264_non_vcl_nalu_type_prefix = 3, - std_video_h264_non_vcl_nalu_type_end_of_sequence = 4, - std_video_h264_non_vcl_nalu_type_end_of_stream = 5, - std_video_h264_non_vcl_nalu_type_precoded = 6, - std_video_h264_non_vcl_nalu_type_invalid = 2147483647, -) - -struct StdVideoH264SpsVuiFlags - aspect_ratio_info_present_flag::UInt32 - overscan_info_present_flag::UInt32 - overscan_appropriate_flag::UInt32 - video_signal_type_present_flag::UInt32 - video_full_range_flag::UInt32 - color_description_present_flag::UInt32 - chroma_loc_info_present_flag::UInt32 - timing_info_present_flag::UInt32 - fixed_frame_rate_flag::UInt32 - bitstream_restriction_flag::UInt32 - nal_hrd_parameters_present_flag::UInt32 - vcl_hrd_parameters_present_flag::UInt32 -end - -struct StdVideoH264HrdParameters - cpb_cnt_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - bit_rate_value_minus1::NTuple{32, UInt32} - cpb_size_value_minus1::NTuple{32, UInt32} - cbr_flag::NTuple{32, UInt8} - initial_cpb_removal_delay_length_minus1::UInt32 - cpb_removal_delay_length_minus1::UInt32 - dpb_output_delay_length_minus1::UInt32 - time_offset_length::UInt32 -end - -struct StdVideoH264SequenceParameterSetVui - aspect_ratio_idc::StdVideoH264AspectRatioIdc - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - color_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coefficients::UInt8 - num_units_in_tick::UInt32 - time_scale::UInt32 - hrd_parameters::StdVideoH264HrdParameters - num_reorder_frames::UInt8 - max_dec_frame_buffering::UInt8 - flags::StdVideoH264SpsVuiFlags -end - -struct StdVideoH264SpsFlags - constraint_set0_flag::UInt32 - constraint_set1_flag::UInt32 - constraint_set2_flag::UInt32 - constraint_set3_flag::UInt32 - constraint_set4_flag::UInt32 - constraint_set5_flag::UInt32 - direct_8x8_inference_flag::UInt32 - mb_adaptive_frame_field_flag::UInt32 - frame_mbs_only_flag::UInt32 - delta_pic_order_always_zero_flag::UInt32 - residual_colour_transform_flag::UInt32 - gaps_in_frame_num_value_allowed_flag::UInt32 - first_picture_after_seek_flag::UInt32 - qpprime_y_zero_transform_bypass_flag::UInt32 - frame_cropping_flag::UInt32 - scaling_matrix_present_flag::UInt32 - vui_parameters_present_flag::UInt32 -end - -struct StdVideoH264ScalingLists - scaling_list_present_mask::UInt8 - use_default_scaling_matrix_mask::UInt8 - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{2, NTuple{64, UInt8}} -end - -struct StdVideoH264SequenceParameterSet - profile_idc::StdVideoH264ProfileIdc - level_idc::StdVideoH264Level - seq_parameter_set_id::UInt8 - chroma_format_idc::StdVideoH264ChromaFormatIdc - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_frame_num_minus4::UInt8 - pic_order_cnt_type::StdVideoH264PocType - log2_max_pic_order_cnt_lsb_minus4::UInt8 - offset_for_non_ref_pic::Int32 - offset_for_top_to_bottom_field::Int32 - num_ref_frames_in_pic_order_cnt_cycle::UInt8 - max_num_ref_frames::UInt8 - pic_width_in_mbs_minus1::UInt32 - pic_height_in_map_units_minus1::UInt32 - frame_crop_left_offset::UInt32 - frame_crop_right_offset::UInt32 - frame_crop_top_offset::UInt32 - frame_crop_bottom_offset::UInt32 - flags::StdVideoH264SpsFlags - offset_for_ref_frame::NTuple{255, Int32} - pScalingLists::Ptr{StdVideoH264ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH264SequenceParameterSetVui} -end - -struct StdVideoH264PpsFlags - transform_8x8_mode_flag::UInt32 - redundant_pic_cnt_present_flag::UInt32 - constrained_intra_pred_flag::UInt32 - deblocking_filter_control_present_flag::UInt32 - weighted_bipred_idc_flag::UInt32 - weighted_pred_flag::UInt32 - pic_order_present_flag::UInt32 - entropy_coding_mode_flag::UInt32 - scaling_matrix_present_flag::UInt32 -end - -struct StdVideoH264PictureParameterSet - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - num_ref_idx_l0_default_active_minus1::UInt8 - num_ref_idx_l1_default_active_minus1::UInt8 - weighted_bipred_idc::StdVideoH264WeightedBiPredIdc - pic_init_qp_minus26::Int8 - pic_init_qs_minus26::Int8 - chroma_qp_index_offset::Int8 - second_chroma_qp_index_offset::Int8 - flags::StdVideoH264PpsFlags - pScalingLists::Ptr{StdVideoH264ScalingLists} -end - -struct StdVideoEncodeH264SliceHeaderFlags - idr_flag::UInt32 - is_reference_flag::UInt32 - num_ref_idx_active_override_flag::UInt32 - no_output_of_prior_pics_flag::UInt32 - long_term_reference_flag::UInt32 - adaptive_ref_pic_marking_mode_flag::UInt32 - no_prior_references_available_flag::UInt32 -end - -struct StdVideoEncodeH264PictureInfoFlags - idr_flag::UInt32 - is_reference_flag::UInt32 - long_term_reference_flag::UInt32 -end - -struct StdVideoEncodeH264RefMgmtFlags - ref_pic_list_modification_l0_flag::UInt32 - ref_pic_list_modification_l1_flag::UInt32 -end - -struct StdVideoEncodeH264RefListModEntry - modification_of_pic_nums_idc::StdVideoH264ModificationOfPicNumsIdc - abs_diff_pic_num_minus1::UInt16 - long_term_pic_num::UInt16 -end - -struct StdVideoEncodeH264RefPicMarkingEntry - operation::StdVideoH264MemMgmtControlOp - difference_of_pic_nums_minus1::UInt16 - long_term_pic_num::UInt16 - long_term_frame_idx::UInt16 - max_long_term_frame_idx_plus1::UInt16 -end - -struct StdVideoEncodeH264RefMemMgmtCtrlOperations - flags::StdVideoEncodeH264RefMgmtFlags - refList0ModOpCount::UInt8 - pRefList0ModOperations::Ptr{StdVideoEncodeH264RefListModEntry} - refList1ModOpCount::UInt8 - pRefList1ModOperations::Ptr{StdVideoEncodeH264RefListModEntry} - refPicMarkingOpCount::UInt8 - pRefPicMarkingOperations::Ptr{StdVideoEncodeH264RefPicMarkingEntry} -end - -struct StdVideoEncodeH264PictureInfo - flags::StdVideoEncodeH264PictureInfoFlags - pictureType::StdVideoH264PictureType - frameNum::UInt32 - pictureOrderCount::UInt32 - long_term_pic_num::UInt16 - long_term_frame_idx::UInt16 -end - -struct StdVideoEncodeH264SliceHeader - flags::StdVideoEncodeH264SliceHeaderFlags - slice_type::StdVideoH264SliceType - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - idr_pic_id::UInt16 - num_ref_idx_l0_active_minus1::UInt8 - num_ref_idx_l1_active_minus1::UInt8 - cabac_init_idc::StdVideoH264CabacInitIdc - disable_deblocking_filter_idc::StdVideoH264DisableDeblockingFilterIdc - slice_alpha_c0_offset_div2::Int8 - slice_beta_offset_div2::Int8 - pMemMgmtCtrlOperations::Ptr{StdVideoEncodeH264RefMemMgmtCtrlOperations} -end +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" -@cenum(VkVideoEncodeH264CapabilitiesFlagBitsEXT, - VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 1, - VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 2, - VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 4, - VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT = 8, - VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT = 16, - VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT = 32, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT = 64, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT = 128, - VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 256, - VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 512, - VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 1024, - VK_VIDEO_ENCODE_H264_CAPABILITIES_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_private_data = 1 -const VkVideoEncodeH264CapabilitiesFlagsEXT = VkFlags +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 -@cenum(VkVideoEncodeH264InputModeFlagBitsEXT, - VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 1, - VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT = 2, - VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT = 4, - VK_VIDEO_ENCODE_H264_INPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" -const VkVideoEncodeH264InputModeFlagsEXT = VkFlags +const VK_EXT_pipeline_creation_cache_control = 1 -@cenum(VkVideoEncodeH264OutputModeFlagBitsEXT, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT = 1, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT = 2, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT = 4, - VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 -const VkVideoEncodeH264OutputModeFlagsEXT = VkFlags +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" -@cenum(VkVideoEncodeH264CreateFlagBitsEXT, - VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT = 0, - VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT = 1, - VK_VIDEO_ENCODE_H264_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_NV_device_diagnostics_config = 1 -const VkVideoEncodeH264CreateFlagsEXT = VkFlags +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 -struct VkVideoEncodeH264CapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEncodeH264CapabilitiesFlagsEXT - inputModeFlags::VkVideoEncodeH264InputModeFlagsEXT - outputModeFlags::VkVideoEncodeH264OutputModeFlagsEXT - minPictureSizeInMbs::VkExtent2D - maxPictureSizeInMbs::VkExtent2D - inputImageDataAlignment::VkExtent2D - maxNumL0ReferenceForP::UInt8 - maxNumL0ReferenceForB::UInt8 - maxNumL1Reference::UInt8 - qualityLevelCount::UInt8 - stdExtensionVersion::VkExtensionProperties -end +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" -struct VkVideoEncodeH264SessionCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoEncodeH264CreateFlagsEXT - maxPictureSizeInMbs::VkExtent2D - pStdExtensionVersion::Ptr{VkExtensionProperties} -end +const VK_QCOM_render_pass_store_ops = 1 -struct VkVideoEncodeH264SessionParametersAddInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - spsStdCount::UInt32 - pSpsStd::Ptr{StdVideoH264SequenceParameterSet} - ppsStdCount::UInt32 - pPpsStd::Ptr{StdVideoH264PictureParameterSet} -end +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 -struct VkVideoEncodeH264SessionParametersCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSpsStdCount::UInt32 - maxPpsStdCount::UInt32 - pParametersAddInfo::Ptr{VkVideoEncodeH264SessionParametersAddInfoEXT} -end +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" -struct VkVideoEncodeH264DpbSlotInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - slotIndex::Int8 - pStdPictureInfo::Ptr{StdVideoEncodeH264PictureInfo} -end +const VK_EXT_fragment_density_map2 = 1 -struct VkVideoEncodeH264NaluSliceEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pSliceHeaderStd::Ptr{StdVideoEncodeH264SliceHeader} - mbCount::UInt32 - refFinalList0EntryCount::UInt8 - pRefFinalList0Entries::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} - refFinalList1EntryCount::UInt8 - pRefFinalList1Entries::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} - precedingNaluBytes::UInt32 - minQp::UInt8 - maxQp::UInt8 -end +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 -struct VkVideoEncodeH264VclFrameInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - refDefaultFinalList0EntryCount::UInt8 - pRefDefaultFinalList0Entries::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} - refDefaultFinalList1EntryCount::UInt8 - pRefDefaultFinalList1Entries::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} - naluSliceEntryCount::UInt32 - pNaluSliceEntries::Ptr{VkVideoEncodeH264NaluSliceEXT} - pCurrentPictureInfo::Ptr{VkVideoEncodeH264DpbSlotInfoEXT} -end +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" -struct VkVideoEncodeH264EmitPictureParametersEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - spsId::UInt8 - emitSpsEnable::VkBool32 - ppsIdEntryCount::UInt32 - ppsIdEntries::Ptr{UInt8} -end +const VK_EXT_image_robustness = 1 -struct VkVideoEncodeH264ProfileEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc -end +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 -struct StdVideoDecodeH264PictureInfoFlags - field_pic_flag::UInt32 - is_intra::UInt32 - bottom_field_flag::UInt32 - is_reference::UInt32 - complementary_field_pair::UInt32 -end +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" -struct StdVideoDecodeH264PictureInfo - seq_parameter_set_id::UInt8 - pic_parameter_set_id::UInt8 - reserved::UInt16 - frame_num::UInt16 - idr_pic_id::UInt16 - PicOrderCnt::NTuple{2, Int32} - flags::StdVideoDecodeH264PictureInfoFlags -end +const VK_EXT_4444_formats = 1 -struct StdVideoDecodeH264ReferenceInfoFlags - top_field_flag::UInt32 - bottom_field_flag::UInt32 - is_long_term::UInt32 - is_non_existing::UInt32 -end +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 -struct StdVideoDecodeH264ReferenceInfo - FrameNum::UInt16 - reserved::UInt16 - PicOrderCnt::NTuple{2, Int32} - flags::StdVideoDecodeH264ReferenceInfoFlags -end +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" -struct StdVideoDecodeH264MvcElementFlags - non_idr::UInt32 - anchor_pic::UInt32 - inter_view::UInt32 -end +const VULKAN_WIN32_H_ = 1 -struct StdVideoDecodeH264MvcElement - flags::StdVideoDecodeH264MvcElementFlags - viewOrderIndex::UInt16 - viewId::UInt16 - temporalId::UInt16 - priorityId::UInt16 - numOfAnchorRefsInL0::UInt16 - viewIdOfAnchorRefsInL0::NTuple{15, UInt16} - numOfAnchorRefsInL1::UInt16 - viewIdOfAnchorRefsInL1::NTuple{15, UInt16} - numOfNonAnchorRefsInL0::UInt16 - viewIdOfNonAnchorRefsInL0::NTuple{15, UInt16} - numOfNonAnchorRefsInL1::UInt16 - viewIdOfNonAnchorRefsInL1::NTuple{15, UInt16} -end +const VK_KHR_win32_surface = 1 -struct StdVideoDecodeH264Mvc - viewId0::UInt32 - mvcElementCount::UInt32 - pMvcElements::Ptr{StdVideoDecodeH264MvcElement} -end +const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6 -@cenum(VkVideoDecodeH264FieldLayoutFlagBitsEXT, - VK_VIDEO_DECODE_H264_PROGRESSIVE_PICTURES_ONLY_EXT = 0, - VK_VIDEO_DECODE_H264_FIELD_LAYOUT_LINE_INTERLACED_PLANE_BIT_EXT = 1, - VK_VIDEO_DECODE_H264_FIELD_LAYOUT_SEPARATE_INTERLACED_PLANE_BIT_EXT = 2, - VK_VIDEO_DECODE_H264_FIELD_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 2147483647, -) +const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" -const VkVideoDecodeH264FieldLayoutFlagsEXT = VkFlags -const VkVideoDecodeH264CreateFlagsEXT = VkFlags +const VK_KHR_external_memory_win32 = 1 -struct VkVideoDecodeH264ProfileEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH264ProfileIdc - fieldLayout::VkVideoDecodeH264FieldLayoutFlagsEXT -end +const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 -struct VkVideoDecodeH264CapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevel::UInt32 - fieldOffsetGranularity::VkOffset2D - stdExtensionVersion::VkExtensionProperties -end +const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" -struct VkVideoDecodeH264SessionCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeH264CreateFlagsEXT - pStdExtensionVersion::Ptr{VkExtensionProperties} -end +const VK_KHR_win32_keyed_mutex = 1 -struct VkVideoDecodeH264SessionParametersAddInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - spsStdCount::UInt32 - pSpsStd::Ptr{StdVideoH264SequenceParameterSet} - ppsStdCount::UInt32 - pPpsStd::Ptr{StdVideoH264PictureParameterSet} -end +const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1 -struct VkVideoDecodeH264SessionParametersCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSpsStdCount::UInt32 - maxPpsStdCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH264SessionParametersAddInfoEXT} -end +const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex" -struct VkVideoDecodeH264PictureInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH264PictureInfo} - slicesCount::UInt32 - pSlicesDataOffsets::Ptr{UInt32} -end +const VK_KHR_external_semaphore_win32 = 1 -struct VkVideoDecodeH264MvcEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdMvc::Ptr{StdVideoDecodeH264Mvc} -end +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1 -struct VkVideoDecodeH264DpbSlotInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH264ReferenceInfo} -end +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" -@cenum(StdVideoH265ChromaFormatIdc, - std_video_h265_chroma_format_idc_monochrome = 0, - std_video_h265_chroma_format_idc_420 = 1, - std_video_h265_chroma_format_idc_422 = 2, - std_video_h265_chroma_format_idc_444 = 3, -) -@cenum(StdVideoH265ProfileIdc, - std_video_h265_profile_idc_main = 1, - std_video_h265_profile_idc_main_10 = 2, - std_video_h265_profile_idc_main_still_picture = 3, - std_video_h265_profile_idc_format_range_extensions = 4, - std_video_h265_profile_idc_scc_extensions = 9, - std_video_h265_profile_idc_invalid = 2147483647, -) -@cenum(StdVideoH265Level, - std_video_h265_level_1_0 = 0, - std_video_h265_level_2_0 = 1, - std_video_h265_level_2_1 = 2, - std_video_h265_level_3_0 = 3, - std_video_h265_level_3_1 = 4, - std_video_h265_level_4_0 = 5, - std_video_h265_level_4_1 = 6, - std_video_h265_level_5_0 = 7, - std_video_h265_level_5_1 = 8, - std_video_h265_level_5_2 = 9, - std_video_h265_level_6_0 = 10, - std_video_h265_level_6_1 = 11, - std_video_h265_level_6_2 = 12, - std_video_h265_level_invalid = 2147483647, -) +const VK_KHR_external_fence_win32 = 1 -struct StdVideoH265DecPicBufMgr - max_latency_increase_plus1::NTuple{7, UInt32} - max_dec_pic_buffering_minus1::NTuple{7, UInt8} - max_num_reorder_pics::NTuple{7, UInt8} -end +const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1 -struct StdVideoH265SubLayerHrdParameters - bit_rate_value_minus1::NTuple{32, UInt32} - cpb_size_value_minus1::NTuple{32, UInt32} - cpb_size_du_value_minus1::NTuple{32, UInt32} - bit_rate_du_value_minus1::NTuple{32, UInt32} - cbr_flag::UInt32 -end - -struct StdVideoH265HrdFlags - nal_hrd_parameters_present_flag::UInt32 - vcl_hrd_parameters_present_flag::UInt32 - sub_pic_hrd_params_present_flag::UInt32 - sub_pic_cpb_params_in_pic_timing_sei_flag::UInt32 - fixed_pic_rate_general_flag::UInt8 - fixed_pic_rate_within_cvs_flag::UInt8 - low_delay_hrd_flag::UInt8 -end - -struct StdVideoH265HrdParameters - tick_divisor_minus2::UInt8 - du_cpb_removal_delay_increment_length_minus1::UInt8 - dpb_output_delay_du_length_minus1::UInt8 - bit_rate_scale::UInt8 - cpb_size_scale::UInt8 - cpb_size_du_scale::UInt8 - initial_cpb_removal_delay_length_minus1::UInt8 - au_cpb_removal_delay_length_minus1::UInt8 - dpb_output_delay_length_minus1::UInt8 - cpb_cnt_minus1::NTuple{7, UInt8} - elemental_duration_in_tc_minus1::NTuple{7, UInt16} - SubLayerHrdParametersNal::NTuple{7, Ptr{StdVideoH265SubLayerHrdParameters}} - SubLayerHrdParametersVcl::NTuple{7, Ptr{StdVideoH265SubLayerHrdParameters}} - flags::StdVideoH265HrdFlags -end - -struct StdVideoH265VpsFlags - vps_temporal_id_nesting_flag::UInt32 - vps_sub_layer_ordering_info_present_flag::UInt32 - vps_timing_info_present_flag::UInt32 - vps_poc_proportional_to_timing_flag::UInt32 -end - -struct StdVideoH265VideoParameterSet - vps_video_parameter_set_id::UInt8 - vps_max_sub_layers_minus1::UInt8 - vps_num_units_in_tick::UInt32 - vps_time_scale::UInt32 - vps_num_ticks_poc_diff_one_minus1::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - hrd_parameters::Ptr{StdVideoH265HrdParameters} - flags::StdVideoH265VpsFlags -end - -struct StdVideoH265ScalingLists - ScalingList4x4::NTuple{6, NTuple{16, UInt8}} - ScalingList8x8::NTuple{6, NTuple{64, UInt8}} - ScalingList16x16::NTuple{6, NTuple{64, UInt8}} - ScalingList32x32::NTuple{2, NTuple{64, UInt8}} - ScalingListDCCoef16x16::NTuple{6, UInt8} - ScalingListDCCoef32x32::NTuple{2, UInt8} -end - -struct StdVideoH265SpsVuiFlags - aspect_ratio_info_present_flag::UInt32 - overscan_info_present_flag::UInt32 - overscan_appropriate_flag::UInt32 - video_signal_type_present_flag::UInt32 - video_full_range_flag::UInt32 - colour_description_present_flag::UInt32 - chroma_loc_info_present_flag::UInt32 - neutral_chroma_indication_flag::UInt32 - field_seq_flag::UInt32 - frame_field_info_present_flag::UInt32 - default_display_window_flag::UInt32 - vui_timing_info_present_flag::UInt32 - vui_poc_proportional_to_timing_flag::UInt32 - vui_hrd_parameters_present_flag::UInt32 - bitstream_restriction_flag::UInt32 - tiles_fixed_structure_flag::UInt32 - motion_vectors_over_pic_boundaries_flag::UInt32 - restricted_ref_pic_lists_flag::UInt32 -end - -struct StdVideoH265SequenceParameterSetVui - aspect_ratio_idc::UInt8 - sar_width::UInt16 - sar_height::UInt16 - video_format::UInt8 - colour_primaries::UInt8 - transfer_characteristics::UInt8 - matrix_coeffs::UInt8 - chroma_sample_loc_type_top_field::UInt8 - chroma_sample_loc_type_bottom_field::UInt8 - def_disp_win_left_offset::UInt16 - def_disp_win_right_offset::UInt16 - def_disp_win_top_offset::UInt16 - def_disp_win_bottom_offset::UInt16 - vui_num_units_in_tick::UInt32 - vui_time_scale::UInt32 - vui_num_ticks_poc_diff_one_minus1::UInt32 - hrd_parameters::Ptr{StdVideoH265HrdParameters} - min_spatial_segmentation_idc::UInt16 - max_bytes_per_pic_denom::UInt8 - max_bits_per_min_cu_denom::UInt8 - log2_max_mv_length_horizontal::UInt8 - log2_max_mv_length_vertical::UInt8 - flags::StdVideoH265SpsVuiFlags -end - -struct StdVideoH265PredictorPaletteEntries - PredictorPaletteEntries::NTuple{3, NTuple{128, UInt16}} -end - -struct StdVideoH265SpsFlags - sps_temporal_id_nesting_flag::UInt32 - separate_colour_plane_flag::UInt32 - scaling_list_enabled_flag::UInt32 - sps_scaling_list_data_present_flag::UInt32 - amp_enabled_flag::UInt32 - sample_adaptive_offset_enabled_flag::UInt32 - pcm_enabled_flag::UInt32 - pcm_loop_filter_disabled_flag::UInt32 - long_term_ref_pics_present_flag::UInt32 - sps_temporal_mvp_enabled_flag::UInt32 - strong_intra_smoothing_enabled_flag::UInt32 - vui_parameters_present_flag::UInt32 - sps_extension_present_flag::UInt32 - sps_range_extension_flag::UInt32 - transform_skip_rotation_enabled_flag::UInt32 - transform_skip_context_enabled_flag::UInt32 - implicit_rdpcm_enabled_flag::UInt32 - explicit_rdpcm_enabled_flag::UInt32 - extended_precision_processing_flag::UInt32 - intra_smoothing_disabled_flag::UInt32 - high_precision_offsets_enabled_flag::UInt32 - persistent_rice_adaptation_enabled_flag::UInt32 - cabac_bypass_alignment_enabled_flag::UInt32 - sps_curr_pic_ref_enabled_flag::UInt32 - palette_mode_enabled_flag::UInt32 - sps_palette_predictor_initializer_present_flag::UInt32 - intra_boundary_filtering_disabled_flag::UInt32 -end - -struct StdVideoH265SequenceParameterSet - profile_idc::StdVideoH265ProfileIdc - level_idc::StdVideoH265Level - pic_width_in_luma_samples::UInt32 - pic_height_in_luma_samples::UInt32 - sps_video_parameter_set_id::UInt8 - sps_max_sub_layers_minus1::UInt8 - sps_seq_parameter_set_id::UInt8 - chroma_format_idc::UInt8 - bit_depth_luma_minus8::UInt8 - bit_depth_chroma_minus8::UInt8 - log2_max_pic_order_cnt_lsb_minus4::UInt8 - sps_max_dec_pic_buffering_minus1::UInt8 - log2_min_luma_coding_block_size_minus3::UInt8 - log2_diff_max_min_luma_coding_block_size::UInt8 - log2_min_luma_transform_block_size_minus2::UInt8 - log2_diff_max_min_luma_transform_block_size::UInt8 - max_transform_hierarchy_depth_inter::UInt8 - max_transform_hierarchy_depth_intra::UInt8 - num_short_term_ref_pic_sets::UInt8 - num_long_term_ref_pics_sps::UInt8 - pcm_sample_bit_depth_luma_minus1::UInt8 - pcm_sample_bit_depth_chroma_minus1::UInt8 - log2_min_pcm_luma_coding_block_size_minus3::UInt8 - log2_diff_max_min_pcm_luma_coding_block_size::UInt8 - conf_win_left_offset::UInt32 - conf_win_right_offset::UInt32 - conf_win_top_offset::UInt32 - conf_win_bottom_offset::UInt32 - pDecPicBufMgr::Ptr{StdVideoH265DecPicBufMgr} - flags::StdVideoH265SpsFlags - pScalingLists::Ptr{StdVideoH265ScalingLists} - pSequenceParameterSetVui::Ptr{StdVideoH265SequenceParameterSetVui} - palette_max_size::UInt8 - delta_palette_max_predictor_size::UInt8 - motion_vector_resolution_control_idc::UInt8 - sps_num_palette_predictor_initializer_minus1::UInt8 - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end - -struct StdVideoH265PpsFlags - dependent_slice_segments_enabled_flag::UInt32 - output_flag_present_flag::UInt32 - sign_data_hiding_enabled_flag::UInt32 - cabac_init_present_flag::UInt32 - constrained_intra_pred_flag::UInt32 - transform_skip_enabled_flag::UInt32 - cu_qp_delta_enabled_flag::UInt32 - pps_slice_chroma_qp_offsets_present_flag::UInt32 - weighted_pred_flag::UInt32 - weighted_bipred_flag::UInt32 - transquant_bypass_enabled_flag::UInt32 - tiles_enabled_flag::UInt32 - entropy_coding_sync_enabled_flag::UInt32 - uniform_spacing_flag::UInt32 - loop_filter_across_tiles_enabled_flag::UInt32 - pps_loop_filter_across_slices_enabled_flag::UInt32 - deblocking_filter_control_present_flag::UInt32 - deblocking_filter_override_enabled_flag::UInt32 - pps_deblocking_filter_disabled_flag::UInt32 - pps_scaling_list_data_present_flag::UInt32 - lists_modification_present_flag::UInt32 - slice_segment_header_extension_present_flag::UInt32 - pps_extension_present_flag::UInt32 - cross_component_prediction_enabled_flag::UInt32 - chroma_qp_offset_list_enabled_flag::UInt32 - pps_curr_pic_ref_enabled_flag::UInt32 - residual_adaptive_colour_transform_enabled_flag::UInt32 - pps_slice_act_qp_offsets_present_flag::UInt32 - pps_palette_predictor_initializer_present_flag::UInt32 - monochrome_palette_flag::UInt32 - pps_range_extension_flag::UInt32 -end - -struct StdVideoH265PictureParameterSet - pps_pic_parameter_set_id::UInt8 - pps_seq_parameter_set_id::UInt8 - num_extra_slice_header_bits::UInt8 - num_ref_idx_l0_default_active_minus1::UInt8 - num_ref_idx_l1_default_active_minus1::UInt8 - init_qp_minus26::Int8 - diff_cu_qp_delta_depth::UInt8 - pps_cb_qp_offset::Int8 - pps_cr_qp_offset::Int8 - num_tile_columns_minus1::UInt8 - num_tile_rows_minus1::UInt8 - column_width_minus1::NTuple{19, UInt16} - row_height_minus1::NTuple{21, UInt16} - pps_beta_offset_div2::Int8 - pps_tc_offset_div2::Int8 - log2_parallel_merge_level_minus2::UInt8 - flags::StdVideoH265PpsFlags - pScalingLists::Ptr{StdVideoH265ScalingLists} - log2_max_transform_skip_block_size_minus2::UInt8 - diff_cu_chroma_qp_offset_depth::UInt8 - chroma_qp_offset_list_len_minus1::UInt8 - cb_qp_offset_list::NTuple{6, Int8} - cr_qp_offset_list::NTuple{6, Int8} - log2_sao_offset_scale_luma::UInt8 - log2_sao_offset_scale_chroma::UInt8 - pps_act_y_qp_offset_plus5::Int8 - pps_act_cb_qp_offset_plus5::Int8 - pps_act_cr_qp_offset_plus5::Int8 - pps_num_palette_predictor_initializer::UInt8 - luma_bit_depth_entry_minus8::UInt8 - chroma_bit_depth_entry_minus8::UInt8 - pPredictorPaletteEntries::Ptr{StdVideoH265PredictorPaletteEntries} -end - -struct StdVideoDecodeH265PictureInfoFlags - IrapPicFlag::UInt32 - IdrPicFlag::UInt32 - IsReference::UInt32 - short_term_ref_pic_set_sps_flag::UInt32 -end - -struct StdVideoDecodeH265PictureInfo - vps_video_parameter_set_id::UInt8 - sps_seq_parameter_set_id::UInt8 - pps_pic_parameter_set_id::UInt8 - num_short_term_ref_pic_sets::UInt8 - PicOrderCntVal::Int32 - NumBitsForSTRefPicSetInSlice::UInt16 - NumDeltaPocsOfRefRpsIdx::UInt8 - RefPicSetStCurrBefore::NTuple{8, UInt8} - RefPicSetStCurrAfter::NTuple{8, UInt8} - RefPicSetLtCurr::NTuple{8, UInt8} - flags::StdVideoDecodeH265PictureInfoFlags -end +const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" -struct StdVideoDecodeH265ReferenceInfoFlags - is_long_term::UInt32 - is_non_existing::UInt32 -end +const VK_NV_external_memory_win32 = 1 -struct StdVideoDecodeH265ReferenceInfo - PicOrderCntVal::Int32 - flags::StdVideoDecodeH265ReferenceInfoFlags -end +const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 -const VkVideoDecodeH265CreateFlagsEXT = VkFlags +const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" -struct VkVideoDecodeH265ProfileEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - stdProfileIdc::StdVideoH265ProfileIdc -end +const VK_NV_win32_keyed_mutex = 1 -struct VkVideoDecodeH265CapabilitiesEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxLevel::UInt32 - stdExtensionVersion::VkExtensionProperties -end +const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2 -struct VkVideoDecodeH265SessionCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - flags::VkVideoDecodeH265CreateFlagsEXT - pStdExtensionVersion::Ptr{VkExtensionProperties} -end +const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex" -struct VkVideoDecodeH265SessionParametersAddInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - spsStdCount::UInt32 - pSpsStd::Ptr{StdVideoH265SequenceParameterSet} - ppsStdCount::UInt32 - pPpsStd::Ptr{StdVideoH265PictureParameterSet} -end +const VK_EXT_full_screen_exclusive = 1 -struct VkVideoDecodeH265SessionParametersCreateInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - maxSpsStdCount::UInt32 - maxPpsStdCount::UInt32 - pParametersAddInfo::Ptr{VkVideoDecodeH265SessionParametersAddInfoEXT} -end +const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4 -struct VkVideoDecodeH265PictureInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdPictureInfo::Ptr{StdVideoDecodeH265PictureInfo} - slicesCount::UInt32 - pSlicesDataOffsets::Ptr{UInt32} -end +const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive" -struct VkVideoDecodeH265DpbSlotInfoEXT - sType::VkStructureType - pNext::Ptr{Cvoid} - pStdReferenceInfo::Ptr{StdVideoDecodeH265ReferenceInfo} -end diff --git a/lib/powerpc64le-linux-gnu.jl b/lib/powerpc64le-linux-gnu.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/powerpc64le-linux-gnu.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/x86_64-apple-darwin14.jl b/lib/x86_64-apple-darwin14.jl new file mode 100644 index 0000000..2916f96 --- /dev/null +++ b/lib/x86_64-apple-darwin14.jl @@ -0,0 +1,11524 @@ +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkMacOSSurfaceCreateFlagsMVK = VkFlags + +struct VkMacOSSurfaceCreateInfoMVK + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMacOSSurfaceCreateFlagsMVK + pView::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMacOSSurfaceMVK ) ( VkInstance instance , const VkMacOSSurfaceCreateInfoMVK * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMacOSSurfaceMVK = Ptr{Cvoid} + +function vkCreateMacOSSurfaceMVK(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMacOSSurfaceMVK, libvulkan), VkResult, (VkInstance, Ptr{VkMacOSSurfaceCreateInfoMVK}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const CAMetalLayer = Cvoid + +const VkMetalSurfaceCreateFlagsEXT = VkFlags + +struct VkMetalSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMetalSurfaceCreateFlagsEXT + pLayer::Ptr{CAMetalLayer} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateMetalSurfaceEXT ) ( VkInstance instance , const VkMetalSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateMetalSurfaceEXT = Ptr{Cvoid} + +function vkCreateMetalSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateMetalSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkMetalSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_MACOS_H_ = 1 + +const VK_MVK_macos_surface = 1 + +const VK_MVK_MACOS_SURFACE_SPEC_VERSION = 3 + +const VK_MVK_MACOS_SURFACE_EXTENSION_NAME = "VK_MVK_macos_surface" + +const VULKAN_METAL_H_ = 1 + +const VK_EXT_metal_surface = 1 + +const VK_EXT_METAL_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_METAL_SURFACE_EXTENSION_NAME = "VK_EXT_metal_surface" + diff --git a/lib/x86_64-linux-gnu.jl b/lib/x86_64-linux-gnu.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/x86_64-linux-gnu.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/x86_64-linux-musl.jl b/lib/x86_64-linux-musl.jl new file mode 100644 index 0000000..811ce02 --- /dev/null +++ b/lib/x86_64-linux-musl.jl @@ -0,0 +1,11614 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWaylandSurfaceCreateFlagsKHR = VkFlags + +const wl_display = Cvoid + +const wl_surface = Cvoid + +struct VkWaylandSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWaylandSurfaceCreateFlagsKHR + display::Ptr{wl_display} + surface::Ptr{wl_surface} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWaylandSurfaceKHR ) ( VkInstance instance , const VkWaylandSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWaylandSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , struct wl_display * display ) +const PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWaylandSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWaylandSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWaylandSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWaylandPresentationSupportKHR(physicalDevice, queueFamilyIndex, display) + ccall((:vkGetPhysicalDeviceWaylandPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{wl_display}), physicalDevice, queueFamilyIndex, display) +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WAYLAND_H_ = 1 + +const VK_KHR_wayland_surface = 1 + +const VK_KHR_WAYLAND_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME = "VK_KHR_wayland_surface" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/x86_64-unknown-freebsd11.1.jl b/lib/x86_64-unknown-freebsd11.1.jl new file mode 100644 index 0000000..c695a5d --- /dev/null +++ b/lib/x86_64-unknown-freebsd11.1.jl @@ -0,0 +1,11578 @@ +const XID = Culong + +const RROutput = XID + +const VisualID = Culong + +const Window = XID + +const _XDisplay = Cvoid + +const Display = _XDisplay + +const xcb_visualid_t = UInt32 + +const xcb_window_t = UInt32 + +const xcb_connection_t = Cvoid + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkXcbSurfaceCreateFlagsKHR = VkFlags + +struct VkXcbSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXcbSurfaceCreateFlagsKHR + connection::Ptr{xcb_connection_t} + window::xcb_window_t +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXcbSurfaceKHR ) ( VkInstance instance , const VkXcbSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXcbSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , xcb_connection_t * connection , xcb_visualid_t visual_id ) +const PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXcbSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXcbSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXcbSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXcbPresentationSupportKHR(physicalDevice, queueFamilyIndex, connection, visual_id) + ccall((:vkGetPhysicalDeviceXcbPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{xcb_connection_t}, xcb_visualid_t), physicalDevice, queueFamilyIndex, connection, visual_id) +end + +const VkXlibSurfaceCreateFlagsKHR = VkFlags + +struct VkXlibSurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkXlibSurfaceCreateFlagsKHR + dpy::Ptr{Display} + window::Window +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateXlibSurfaceKHR ) ( VkInstance instance , const VkXlibSurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateXlibSurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , Display * dpy , VisualID visualID ) +const PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR = Ptr{Cvoid} + +function vkCreateXlibSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateXlibSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkXlibSurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceXlibPresentationSupportKHR(physicalDevice, queueFamilyIndex, dpy, visualID) + ccall((:vkGetPhysicalDeviceXlibPresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32, Ptr{Display}, VisualID), physicalDevice, queueFamilyIndex, dpy, visualID) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireXlibDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , VkDisplayKHR display ) +const PFN_vkAcquireXlibDisplayEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRandROutputDisplayEXT ) ( VkPhysicalDevice physicalDevice , Display * dpy , RROutput rrOutput , VkDisplayKHR * pDisplay ) +const PFN_vkGetRandROutputDisplayEXT = Ptr{Cvoid} + +function vkAcquireXlibDisplayEXT(physicalDevice, dpy, display) + ccall((:vkAcquireXlibDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, VkDisplayKHR), physicalDevice, dpy, display) +end + +function vkGetRandROutputDisplayEXT(physicalDevice, dpy, rrOutput, pDisplay) + ccall((:vkGetRandROutputDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Display}, RROutput, Ptr{VkDisplayKHR}), physicalDevice, dpy, rrOutput, pDisplay) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_XCB_H_ = 1 + +const VK_KHR_xcb_surface = 1 + +const VK_KHR_XCB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XCB_SURFACE_EXTENSION_NAME = "VK_KHR_xcb_surface" + +const VULKAN_XLIB_H_ = 1 + +const VK_KHR_xlib_surface = 1 + +const VK_KHR_XLIB_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_XLIB_SURFACE_EXTENSION_NAME = "VK_KHR_xlib_surface" + +const VULKAN_XLIB_XRANDR_H_ = 1 + +const VK_EXT_acquire_xlib_display = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME = "VK_EXT_acquire_xlib_display" + diff --git a/lib/x86_64-w64-mingw32.jl b/lib/x86_64-w64-mingw32.jl new file mode 100644 index 0000000..5a90c27 --- /dev/null +++ b/lib/x86_64-w64-mingw32.jl @@ -0,0 +1,11815 @@ +struct HMONITOR__ + unused::Cint +end + +const HMONITOR = Ptr{HMONITOR__} + +const DWORD = Culong + +const LPVOID = Ptr{Cvoid} + +const WINBOOL = Cint + +struct _SECURITY_ATTRIBUTES + nLength::DWORD + lpSecurityDescriptor::LPVOID + bInheritHandle::WINBOOL +end + +const SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES + +const WCHAR = Cwchar_t + +const LPCWSTR = Ptr{WCHAR} + +const HANDLE = Ptr{Cvoid} + +struct HWND__ + unused::Cint +end + +const HWND = Ptr{HWND__} + +struct HINSTANCE__ + unused::Cint +end + +const HINSTANCE = Ptr{HINSTANCE__} + +const VkBool32 = UInt32 + +const VkDeviceAddress = UInt64 + +const VkDeviceSize = UInt64 + +const VkFlags = UInt32 + +const VkSampleMask = UInt32 + +const VkBuffer_T = Cvoid + +const VkBuffer = Ptr{VkBuffer_T} + +const VkImage_T = Cvoid + +const VkImage = Ptr{VkImage_T} + +const VkInstance_T = Cvoid + +const VkInstance = Ptr{VkInstance_T} + +const VkPhysicalDevice_T = Cvoid + +const VkPhysicalDevice = Ptr{VkPhysicalDevice_T} + +const VkDevice_T = Cvoid + +const VkDevice = Ptr{VkDevice_T} + +const VkQueue_T = Cvoid + +const VkQueue = Ptr{VkQueue_T} + +const VkSemaphore_T = Cvoid + +const VkSemaphore = Ptr{VkSemaphore_T} + +const VkCommandBuffer_T = Cvoid + +const VkCommandBuffer = Ptr{VkCommandBuffer_T} + +const VkFence_T = Cvoid + +const VkFence = Ptr{VkFence_T} + +const VkDeviceMemory_T = Cvoid + +const VkDeviceMemory = Ptr{VkDeviceMemory_T} + +const VkEvent_T = Cvoid + +const VkEvent = Ptr{VkEvent_T} + +const VkQueryPool_T = Cvoid + +const VkQueryPool = Ptr{VkQueryPool_T} + +const VkBufferView_T = Cvoid + +const VkBufferView = Ptr{VkBufferView_T} + +const VkImageView_T = Cvoid + +const VkImageView = Ptr{VkImageView_T} + +const VkShaderModule_T = Cvoid + +const VkShaderModule = Ptr{VkShaderModule_T} + +const VkPipelineCache_T = Cvoid + +const VkPipelineCache = Ptr{VkPipelineCache_T} + +const VkPipelineLayout_T = Cvoid + +const VkPipelineLayout = Ptr{VkPipelineLayout_T} + +const VkPipeline_T = Cvoid + +const VkPipeline = Ptr{VkPipeline_T} + +const VkRenderPass_T = Cvoid + +const VkRenderPass = Ptr{VkRenderPass_T} + +const VkDescriptorSetLayout_T = Cvoid + +const VkDescriptorSetLayout = Ptr{VkDescriptorSetLayout_T} + +const VkSampler_T = Cvoid + +const VkSampler = Ptr{VkSampler_T} + +const VkDescriptorSet_T = Cvoid + +const VkDescriptorSet = Ptr{VkDescriptorSet_T} + +const VkDescriptorPool_T = Cvoid + +const VkDescriptorPool = Ptr{VkDescriptorPool_T} + +const VkFramebuffer_T = Cvoid + +const VkFramebuffer = Ptr{VkFramebuffer_T} + +const VkCommandPool_T = Cvoid + +const VkCommandPool = Ptr{VkCommandPool_T} + +@cenum VkResult::Int32 begin + VK_SUCCESS = 0 + VK_NOT_READY = 1 + VK_TIMEOUT = 2 + VK_EVENT_SET = 3 + VK_EVENT_RESET = 4 + VK_INCOMPLETE = 5 + VK_ERROR_OUT_OF_HOST_MEMORY = -1 + VK_ERROR_OUT_OF_DEVICE_MEMORY = -2 + VK_ERROR_INITIALIZATION_FAILED = -3 + VK_ERROR_DEVICE_LOST = -4 + VK_ERROR_MEMORY_MAP_FAILED = -5 + VK_ERROR_LAYER_NOT_PRESENT = -6 + VK_ERROR_EXTENSION_NOT_PRESENT = -7 + VK_ERROR_FEATURE_NOT_PRESENT = -8 + VK_ERROR_INCOMPATIBLE_DRIVER = -9 + VK_ERROR_TOO_MANY_OBJECTS = -10 + VK_ERROR_FORMAT_NOT_SUPPORTED = -11 + VK_ERROR_FRAGMENTED_POOL = -12 + VK_ERROR_UNKNOWN = -13 + VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003 + VK_ERROR_FRAGMENTATION = -1000161000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000 + VK_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_INCOMPATIBLE_VERSION_KHR = -1000150000 + VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000 + VK_ERROR_NOT_PERMITTED_EXT = -1000174001 + VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000 + VK_THREAD_IDLE_KHR = 1000268000 + VK_THREAD_DONE_KHR = 1000268001 + VK_OPERATION_DEFERRED_KHR = 1000268002 + VK_OPERATION_NOT_DEFERRED_KHR = 1000268003 + VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000 + VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = -1000072003 + VK_ERROR_FRAGMENTATION_EXT = -1000161000 + VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000257000 + VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = -1000257000 + VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000 + VK_RESULT_MAX_ENUM = 2147483647 +end + +@cenum VkStructureType::UInt32 begin + VK_STRUCTURE_TYPE_APPLICATION_INFO = 0 + VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2 + VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3 + VK_STRUCTURE_TYPE_SUBMIT_INFO = 4 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5 + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6 + VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7 + VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8 + VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9 + VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11 + VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12 + VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13 + VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14 + VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15 + VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16 + VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18 + VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19 + VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23 + VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24 + VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25 + VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26 + VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28 + VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29 + VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30 + VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35 + VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36 + VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38 + VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42 + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45 + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46 + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47 + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000 + VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001 + VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003 + VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004 + VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005 + VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006 + VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013 + VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000 + VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001 + VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000 + VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001 + VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002 + VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001 + VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006 + VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000 + VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001 + VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002 + VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003 + VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002 + VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001 + VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002 + VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004 + VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000 + VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002 + VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000 + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001 + VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000 + VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001 + VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000 + VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000 + VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52 + VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004 + VK_STRUCTURE_TYPE_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_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_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002 + VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001 + VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000 + VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000 + 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_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000 + VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001 + 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_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001 + VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002 + VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000 + 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_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001 + 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_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002 + VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003 + VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005 + VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006 + 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_DISPLAY_PROPERTIES_2_KHR = 1000121000 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001 + VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003 + VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004 + 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_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002 + VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000165007 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR = 1000150001 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR = 1000150008 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR = 1000150009 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010 + VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011 + VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR = 1000150013 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR = 1000150014 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000 + VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004 + VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005 + VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000 + VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005 + VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001 + VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003 + VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004 + VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009 + VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011 + VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000 + VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000 + VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001 + 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_CLOCK_FEATURES_KHR = 1000181000 + VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000 + VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000 + 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_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002 + VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000 + VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000 + VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002 + VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000 + VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000 + VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001 + VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002 + VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003 + VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004 + VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000 + VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000 + VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001 + VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000 + VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001 + VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000 + VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000 + VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001 + VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000 + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000 + VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000 + VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002 + VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001 + VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000 + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000 + VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR = 1000268000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000 + VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004 + VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000 + VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001 + VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003 + VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005 + VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001 + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000 + VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001 + VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002 + VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000 + VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001 + VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000 + VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000 + VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000 + VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = 1000011000 + 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_SHADER_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000 + VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000 + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = 1000108000 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = 1000108001 + VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = 1000108002 + VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = 1000108003 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002 + VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003 + VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004 + VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005 + VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006 + 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_POINTERS_FEATURES_KHR = 1000120000 + 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_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000 + VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001 + 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_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000 + 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_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_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006 + VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000 + VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = 1000175000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000 + VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = 1000207000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = 1000207001 + VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = 1000207002 + VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = 1000207003 + VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = 1000207004 + VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = 1000207005 + VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = 1000210000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = 1000241000 + VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = 1000241001 + VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = 1000241002 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001 + VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = 1000253000 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = 1000257000 + VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = 1000244001 + VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = 1000257002 + VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = 1000257003 + VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = 1000257004 + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = 1000261000 + VK_STRUCTURE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkImageLayout::UInt32 begin + VK_IMAGE_LAYOUT_UNDEFINED = 0 + VK_IMAGE_LAYOUT_GENERAL = 1 + VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3 + VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4 + VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5 + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6 + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7 + VK_IMAGE_LAYOUT_PREINITIALIZED = 8 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001 + VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003 + VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002 + VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000 + VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003 + VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000 + 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_DEPTH_ATTACHMENT_OPTIMAL_KHR = 1000241000 + VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = 1000241001 + VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000241002 + VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000241003 + VK_IMAGE_LAYOUT_MAX_ENUM = 2147483647 +end + +@cenum VkObjectType::UInt32 begin + 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_DEBUG_UTILS_MESSENGER_EXT = 1000128000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000 + VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000 + VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000 + VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000 + VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000 + VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000 + VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000 + VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_OBJECT_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkVendorId::UInt32 begin + VK_VENDOR_ID_VIV = 65537 + VK_VENDOR_ID_VSI = 65538 + VK_VENDOR_ID_KAZAN = 65539 + VK_VENDOR_ID_CODEPLAY = 65540 + VK_VENDOR_ID_MESA = 65541 + VK_VENDOR_ID_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineCacheHeaderVersion::UInt32 begin + VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1 + VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 2147483647 +end + +@cenum VkSystemAllocationScope::UInt32 begin + VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0 + VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1 + VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2 + VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3 + VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4 + VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 2147483647 +end + +@cenum VkInternalAllocationType::UInt32 begin + VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0 + VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkFormat::UInt32 begin + 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_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000 + VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001 + VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002 + VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003 + VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004 + VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005 + VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006 + VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007 + VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008 + VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009 + VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010 + VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011 + VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012 + VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013 + VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000 + VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkImageTiling::UInt32 begin + VK_IMAGE_TILING_OPTIMAL = 0 + VK_IMAGE_TILING_LINEAR = 1 + VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000 + VK_IMAGE_TILING_MAX_ENUM = 2147483647 +end + +@cenum VkImageType::UInt32 begin + VK_IMAGE_TYPE_1D = 0 + VK_IMAGE_TYPE_2D = 1 + VK_IMAGE_TYPE_3D = 2 + VK_IMAGE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkPhysicalDeviceType::UInt32 begin + VK_PHYSICAL_DEVICE_TYPE_OTHER = 0 + VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1 + VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2 + VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3 + VK_PHYSICAL_DEVICE_TYPE_CPU = 4 + VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkQueryType::UInt32 begin + VK_QUERY_TYPE_OCCLUSION = 0 + VK_QUERY_TYPE_PIPELINE_STATISTICS = 1 + VK_QUERY_TYPE_TIMESTAMP = 2 + VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004 + VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000165000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150000 + VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000 + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000 + VK_QUERY_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSharingMode::UInt32 begin + VK_SHARING_MODE_EXCLUSIVE = 0 + VK_SHARING_MODE_CONCURRENT = 1 + VK_SHARING_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkComponentSwizzle::UInt32 begin + VK_COMPONENT_SWIZZLE_IDENTITY = 0 + VK_COMPONENT_SWIZZLE_ZERO = 1 + VK_COMPONENT_SWIZZLE_ONE = 2 + VK_COMPONENT_SWIZZLE_R = 3 + VK_COMPONENT_SWIZZLE_G = 4 + VK_COMPONENT_SWIZZLE_B = 5 + VK_COMPONENT_SWIZZLE_A = 6 + VK_COMPONENT_SWIZZLE_MAX_ENUM = 2147483647 +end + +@cenum VkImageViewType::UInt32 begin + VK_IMAGE_VIEW_TYPE_1D = 0 + VK_IMAGE_VIEW_TYPE_2D = 1 + VK_IMAGE_VIEW_TYPE_3D = 2 + VK_IMAGE_VIEW_TYPE_CUBE = 3 + VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4 + VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5 + VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6 + VK_IMAGE_VIEW_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkBlendFactor::UInt32 begin + VK_BLEND_FACTOR_ZERO = 0 + VK_BLEND_FACTOR_ONE = 1 + VK_BLEND_FACTOR_SRC_COLOR = 2 + VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3 + VK_BLEND_FACTOR_DST_COLOR = 4 + VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5 + VK_BLEND_FACTOR_SRC_ALPHA = 6 + VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7 + VK_BLEND_FACTOR_DST_ALPHA = 8 + VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9 + VK_BLEND_FACTOR_CONSTANT_COLOR = 10 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11 + VK_BLEND_FACTOR_CONSTANT_ALPHA = 12 + VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13 + VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14 + VK_BLEND_FACTOR_SRC1_COLOR = 15 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16 + VK_BLEND_FACTOR_SRC1_ALPHA = 17 + VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18 + VK_BLEND_FACTOR_MAX_ENUM = 2147483647 +end + +@cenum VkBlendOp::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkCompareOp::UInt32 begin + VK_COMPARE_OP_NEVER = 0 + VK_COMPARE_OP_LESS = 1 + VK_COMPARE_OP_EQUAL = 2 + VK_COMPARE_OP_LESS_OR_EQUAL = 3 + VK_COMPARE_OP_GREATER = 4 + VK_COMPARE_OP_NOT_EQUAL = 5 + VK_COMPARE_OP_GREATER_OR_EQUAL = 6 + VK_COMPARE_OP_ALWAYS = 7 + VK_COMPARE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkDynamicState::UInt32 begin + 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_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004 + VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006 + VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001 + VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000 + VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000 + VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001 + VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002 + VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003 + VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004 + VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005 + VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006 + VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007 + VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008 + VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009 + VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010 + VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011 + VK_DYNAMIC_STATE_MAX_ENUM = 2147483647 +end + +@cenum VkFrontFace::UInt32 begin + VK_FRONT_FACE_COUNTER_CLOCKWISE = 0 + VK_FRONT_FACE_CLOCKWISE = 1 + VK_FRONT_FACE_MAX_ENUM = 2147483647 +end + +@cenum VkVertexInputRate::UInt32 begin + VK_VERTEX_INPUT_RATE_VERTEX = 0 + VK_VERTEX_INPUT_RATE_INSTANCE = 1 + VK_VERTEX_INPUT_RATE_MAX_ENUM = 2147483647 +end + +@cenum VkPrimitiveTopology::UInt32 begin + VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5 + VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6 + VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8 + VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9 + VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10 + VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 2147483647 +end + +@cenum VkPolygonMode::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkStencilOp::UInt32 begin + VK_STENCIL_OP_KEEP = 0 + VK_STENCIL_OP_ZERO = 1 + VK_STENCIL_OP_REPLACE = 2 + VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3 + VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4 + VK_STENCIL_OP_INVERT = 5 + VK_STENCIL_OP_INCREMENT_AND_WRAP = 6 + VK_STENCIL_OP_DECREMENT_AND_WRAP = 7 + VK_STENCIL_OP_MAX_ENUM = 2147483647 +end + +@cenum VkLogicOp::UInt32 begin + VK_LOGIC_OP_CLEAR = 0 + VK_LOGIC_OP_AND = 1 + VK_LOGIC_OP_AND_REVERSE = 2 + VK_LOGIC_OP_COPY = 3 + VK_LOGIC_OP_AND_INVERTED = 4 + VK_LOGIC_OP_NO_OP = 5 + VK_LOGIC_OP_XOR = 6 + VK_LOGIC_OP_OR = 7 + VK_LOGIC_OP_NOR = 8 + VK_LOGIC_OP_EQUIVALENT = 9 + VK_LOGIC_OP_INVERT = 10 + VK_LOGIC_OP_OR_REVERSE = 11 + VK_LOGIC_OP_COPY_INVERTED = 12 + VK_LOGIC_OP_OR_INVERTED = 13 + VK_LOGIC_OP_NAND = 14 + VK_LOGIC_OP_SET = 15 + VK_LOGIC_OP_MAX_ENUM = 2147483647 +end + +@cenum VkBorderColor::UInt32 begin + 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_FLOAT_CUSTOM_EXT = 1000287003 + VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004 + VK_BORDER_COLOR_MAX_ENUM = 2147483647 +end + +@cenum VkFilter::UInt32 begin + VK_FILTER_NEAREST = 0 + VK_FILTER_LINEAR = 1 + VK_FILTER_CUBIC_IMG = 1000015000 + VK_FILTER_CUBIC_EXT = 1000015000 + VK_FILTER_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerAddressMode::UInt32 begin + 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_MIRROR_CLAMP_TO_EDGE_KHR = 4 + VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerMipmapMode::UInt32 begin + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0 + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1 + VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorType::UInt32 begin + VK_DESCRIPTOR_TYPE_SAMPLER = 0 + VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1 + VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2 + VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3 + VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4 + VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7 + VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8 + VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9 + VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10 + VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000165000 + VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000 + VK_DESCRIPTOR_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentLoadOp::UInt32 begin + VK_ATTACHMENT_LOAD_OP_LOAD = 0 + VK_ATTACHMENT_LOAD_OP_CLEAR = 1 + VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2 + VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 2147483647 +end + +@cenum VkAttachmentStoreOp::UInt32 begin + VK_ATTACHMENT_STORE_OP_STORE = 0 + VK_ATTACHMENT_STORE_OP_DONT_CARE = 1 + VK_ATTACHMENT_STORE_OP_NONE_QCOM = 1000301000 + VK_ATTACHMENT_STORE_OP_MAX_ENUM = 2147483647 +end + +@cenum VkPipelineBindPoint::UInt32 begin + VK_PIPELINE_BIND_POINT_GRAPHICS = 0 + VK_PIPELINE_BIND_POINT_COMPUTE = 1 + VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000 + VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000 + VK_PIPELINE_BIND_POINT_MAX_ENUM = 2147483647 +end + +@cenum VkCommandBufferLevel::UInt32 begin + VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0 + VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1 + VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 2147483647 +end + +@cenum VkIndexType::UInt32 begin + VK_INDEX_TYPE_UINT16 = 0 + VK_INDEX_TYPE_UINT32 = 1 + VK_INDEX_TYPE_NONE_KHR = 1000165000 + VK_INDEX_TYPE_UINT8_EXT = 1000265000 + VK_INDEX_TYPE_NONE_NV = 1000165000 + VK_INDEX_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkSubpassContents::UInt32 begin + VK_SUBPASS_CONTENTS_INLINE = 0 + VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1 + VK_SUBPASS_CONTENTS_MAX_ENUM = 2147483647 +end + +@cenum VkAccessFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 33554432 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 67108864 + VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 134217728 + VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 1048576 + VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 524288 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 4194304 + VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 8388608 + VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 16777216 + VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 131072 + VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 262144 + VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 2097152 + VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 4194304 + VK_ACCESS_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAccessFlags = VkFlags + +@cenum VkImageAspectFlagBits::UInt32 begin + 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_MEMORY_PLANE_0_BIT_EXT = 128 + VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 256 + VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 512 + VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 1024 + 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 +end + +const VkImageAspectFlags = VkFlags + +@cenum VkFormatFeatureFlagBits::UInt32 begin + VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 1 + VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 2 + VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 4 + VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 8 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 16 + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 32 + VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 64 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 128 + VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 256 + VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 512 + VK_FORMAT_FEATURE_BLIT_SRC_BIT = 1024 + VK_FORMAT_FEATURE_BLIT_DST_BIT = 2048 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 4096 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 32768 + VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 131072 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 262144 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 524288 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 1048576 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 2097152 + VK_FORMAT_FEATURE_DISJOINT_BIT = 4194304 + VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 8388608 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 65536 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 8192 + VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 536870912 + VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 16777216 + VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 16384 + VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 32768 + VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 65536 + 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 8192 + VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFormatFeatureFlags = VkFlags + +@cenum VkImageCreateFlagBits::UInt32 begin + 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_CORNER_SAMPLED_BIT_NV = 8192 + VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 4096 + VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 16384 + 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 +end + +const VkImageCreateFlags = VkFlags + +@cenum VkSampleCountFlagBits::UInt32 begin + 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 +end + +const VkSampleCountFlags = VkFlags + +@cenum VkImageUsageFlagBits::UInt32 begin + 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_SHADING_RATE_IMAGE_BIT_NV = 256 + VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 512 + VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageUsageFlags = VkFlags + +const VkInstanceCreateFlags = VkFlags + +@cenum VkMemoryHeapFlagBits::UInt32 begin + 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 +end + +const VkMemoryHeapFlags = VkFlags + +@cenum VkMemoryPropertyFlagBits::UInt32 begin + 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_DEVICE_COHERENT_BIT_AMD = 64 + VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 128 + VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryPropertyFlags = VkFlags + +@cenum VkQueueFlagBits::UInt32 begin + 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 +end + +const VkQueueFlags = VkFlags + +const VkDeviceCreateFlags = VkFlags + +@cenum VkDeviceQueueCreateFlagBits::UInt32 begin + VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 1 + VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDeviceQueueCreateFlags = VkFlags + +@cenum VkPipelineStageFlagBits::UInt32 begin + 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_TRANSFORM_FEEDBACK_BIT_EXT = 16777216 + VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 262144 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 33554432 + VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 4194304 + VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 524288 + VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 1048576 + VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 8388608 + VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 131072 + VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 2097152 + VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 33554432 + VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineStageFlags = VkFlags + +const VkMemoryMapFlags = VkFlags + +@cenum VkSparseMemoryBindFlagBits::UInt32 begin + VK_SPARSE_MEMORY_BIND_METADATA_BIT = 1 + VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSparseMemoryBindFlags = VkFlags + +@cenum VkSparseImageFormatFlagBits::UInt32 begin + 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 +end + +const VkSparseImageFormatFlags = VkFlags + +@cenum VkFenceCreateFlagBits::UInt32 begin + VK_FENCE_CREATE_SIGNALED_BIT = 1 + VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceCreateFlags = VkFlags + +const VkSemaphoreCreateFlags = VkFlags + +const VkEventCreateFlags = VkFlags + +@cenum VkQueryPipelineStatisticFlagBits::UInt32 begin + 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 +end + +const VkQueryPipelineStatisticFlags = VkFlags + +const VkQueryPoolCreateFlags = VkFlags + +@cenum VkQueryResultFlagBits::UInt32 begin + 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 +end + +const VkQueryResultFlags = VkFlags + +@cenum VkBufferCreateFlagBits::UInt32 begin + VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 1 + VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 2 + VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 4 + VK_BUFFER_CREATE_PROTECTED_BIT = 8 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 16 + VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 16 + VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferCreateFlags = VkFlags + +@cenum VkBufferUsageFlagBits::UInt32 begin + VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 1 + VK_BUFFER_USAGE_TRANSFER_DST_BIT = 2 + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 4 + VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 8 + VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 16 + VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 32 + VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 64 + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 128 + VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 256 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 131072 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 2048 + VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 4096 + VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 512 + VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR = 1024 + VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 1024 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 131072 + VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = 131072 + VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkBufferUsageFlags = VkFlags + +const VkBufferViewCreateFlags = VkFlags + +@cenum VkImageViewCreateFlagBits::UInt32 begin + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 1 + VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 2 + VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkImageViewCreateFlags = VkFlags + +@cenum VkShaderModuleCreateFlagBits::UInt32 begin + VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkShaderModuleCreateFlags = VkFlags + +@cenum VkPipelineCacheCreateFlagBits::UInt32 begin + VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 1 + VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineCacheCreateFlags = VkFlags + +@cenum VkColorComponentFlagBits::UInt32 begin + 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 +end + +const VkColorComponentFlags = VkFlags + +@cenum VkPipelineCreateFlagBits::UInt32 begin + VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 1 + VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 2 + VK_PIPELINE_CREATE_DERIVATIVE_BIT = 4 + VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 8 + VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 16 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 16384 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 32768 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 65536 + VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 131072 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 4096 + VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 8192 + VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 32 + VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 64 + VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 128 + VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 262144 + VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 2048 + VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 256 + VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 512 + 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 +end + +const VkPipelineCreateFlags = VkFlags + +@cenum VkPipelineShaderStageCreateFlagBits::UInt32 begin + VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 1 + VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 2 + VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkPipelineShaderStageCreateFlags = VkFlags + +@cenum VkShaderStageFlagBits::UInt32 begin + 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_RAYGEN_BIT_KHR = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 1024 + VK_SHADER_STAGE_MISS_BIT_KHR = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_KHR = 8192 + VK_SHADER_STAGE_TASK_BIT_NV = 64 + VK_SHADER_STAGE_MESH_BIT_NV = 128 + VK_SHADER_STAGE_RAYGEN_BIT_NV = 256 + VK_SHADER_STAGE_ANY_HIT_BIT_NV = 512 + VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 1024 + VK_SHADER_STAGE_MISS_BIT_NV = 2048 + VK_SHADER_STAGE_INTERSECTION_BIT_NV = 4096 + VK_SHADER_STAGE_CALLABLE_BIT_NV = 8192 + VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +@cenum VkCullModeFlagBits::UInt32 begin + 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 +end + +const VkCullModeFlags = VkFlags + +const VkPipelineVertexInputStateCreateFlags = VkFlags + +const VkPipelineInputAssemblyStateCreateFlags = VkFlags + +const VkPipelineTessellationStateCreateFlags = VkFlags + +const VkPipelineViewportStateCreateFlags = VkFlags + +const VkPipelineRasterizationStateCreateFlags = VkFlags + +const VkPipelineMultisampleStateCreateFlags = VkFlags + +const VkPipelineDepthStencilStateCreateFlags = VkFlags + +const VkPipelineColorBlendStateCreateFlags = VkFlags + +const VkPipelineDynamicStateCreateFlags = VkFlags + +const VkPipelineLayoutCreateFlags = VkFlags + +const VkShaderStageFlags = VkFlags + +@cenum VkSamplerCreateFlagBits::UInt32 begin + VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 1 + VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 2 + VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSamplerCreateFlags = VkFlags + +@cenum VkDescriptorPoolCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 1 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 2 + VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 2 + VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkDescriptorPoolCreateFlags = VkFlags + +const VkDescriptorPoolResetFlags = VkFlags + +@cenum VkDescriptorSetLayoutCreateFlagBits::UInt32 begin + VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 2 + 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 +end + +const VkDescriptorSetLayoutCreateFlags = VkFlags + +@cenum VkAttachmentDescriptionFlagBits::UInt32 begin + VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 1 + VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkAttachmentDescriptionFlags = VkFlags + +@cenum VkDependencyFlagBits::UInt32 begin + 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 +end + +const VkDependencyFlags = VkFlags + +@cenum VkFramebufferCreateFlagBits::UInt32 begin + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 1 + VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = 1 + VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFramebufferCreateFlags = VkFlags + +@cenum VkRenderPassCreateFlagBits::UInt32 begin + VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 2 + VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkRenderPassCreateFlags = VkFlags + +@cenum VkSubpassDescriptionFlagBits::UInt32 begin + VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 1 + VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 2 + VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 4 + VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 8 + VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSubpassDescriptionFlags = VkFlags + +@cenum VkCommandPoolCreateFlagBits::UInt32 begin + 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 +end + +const VkCommandPoolCreateFlags = VkFlags + +@cenum VkCommandPoolResetFlagBits::UInt32 begin + VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandPoolResetFlags = VkFlags + +@cenum VkCommandBufferUsageFlagBits::UInt32 begin + 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 +end + +const VkCommandBufferUsageFlags = VkFlags + +@cenum VkQueryControlFlagBits::UInt32 begin + VK_QUERY_CONTROL_PRECISE_BIT = 1 + VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkQueryControlFlags = VkFlags + +@cenum VkCommandBufferResetFlagBits::UInt32 begin + VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 1 + VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkCommandBufferResetFlags = VkFlags + +@cenum VkStencilFaceFlagBits::UInt32 begin + VK_STENCIL_FACE_FRONT_BIT = 1 + VK_STENCIL_FACE_BACK_BIT = 2 + VK_STENCIL_FACE_FRONT_AND_BACK = 3 + VK_STENCIL_FRONT_AND_BACK = 3 + VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkStencilFaceFlags = VkFlags + +struct VkExtent2D + width::UInt32 + height::UInt32 +end + +struct VkExtent3D + width::UInt32 + height::UInt32 + depth::UInt32 +end + +struct VkOffset2D + x::Int32 + y::Int32 +end + +struct VkOffset3D + x::Int32 + y::Int32 + z::Int32 +end + +struct VkRect2D + offset::VkOffset2D + extent::VkExtent2D +end + +struct VkBaseInStructure + sType::VkStructureType + pNext::Ptr{VkBaseInStructure} +end + +struct VkBaseOutStructure + sType::VkStructureType + pNext::Ptr{VkBaseOutStructure} +end + +struct VkBufferMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + buffer::VkBuffer + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkDispatchIndirectCommand + x::UInt32 + y::UInt32 + z::UInt32 +end + +struct VkDrawIndexedIndirectCommand + indexCount::UInt32 + instanceCount::UInt32 + firstIndex::UInt32 + vertexOffset::Int32 + firstInstance::UInt32 +end + +struct VkDrawIndirectCommand + vertexCount::UInt32 + instanceCount::UInt32 + firstVertex::UInt32 + firstInstance::UInt32 +end + +struct VkImageSubresourceRange + aspectMask::VkImageAspectFlags + baseMipLevel::UInt32 + levelCount::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + oldLayout::VkImageLayout + newLayout::VkImageLayout + srcQueueFamilyIndex::UInt32 + dstQueueFamilyIndex::UInt32 + image::VkImage + subresourceRange::VkImageSubresourceRange +end + +struct VkMemoryBarrier + sType::VkStructureType + pNext::Ptr{Cvoid} + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags +end + +# typedef void * ( VKAPI_PTR * PFN_vkAllocationFunction ) ( void * pUserData , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkAllocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeFunction ) ( void * pUserData , void * pMemory ) +const PFN_vkFreeFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalAllocationNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalAllocationNotification = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkInternalFreeNotification ) ( void * pUserData , size_t size , VkInternalAllocationType allocationType , VkSystemAllocationScope allocationScope ) +const PFN_vkInternalFreeNotification = Ptr{Cvoid} + +# typedef void * ( VKAPI_PTR * PFN_vkReallocationFunction ) ( void * pUserData , void * pOriginal , size_t size , size_t alignment , VkSystemAllocationScope allocationScope ) +const PFN_vkReallocationFunction = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkVoidFunction ) ( void ) +const PFN_vkVoidFunction = Ptr{Cvoid} + +struct VkAllocationCallbacks + pUserData::Ptr{Cvoid} + pfnAllocation::PFN_vkAllocationFunction + pfnReallocation::PFN_vkReallocationFunction + pfnFree::PFN_vkFreeFunction + pfnInternalAllocation::PFN_vkInternalAllocationNotification + pfnInternalFree::PFN_vkInternalFreeNotification +end + +struct VkApplicationInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + pApplicationName::Ptr{Cchar} + applicationVersion::UInt32 + pEngineName::Ptr{Cchar} + engineVersion::UInt32 + apiVersion::UInt32 +end + +struct VkFormatProperties + linearTilingFeatures::VkFormatFeatureFlags + optimalTilingFeatures::VkFormatFeatureFlags + bufferFeatures::VkFormatFeatureFlags +end + +struct VkImageFormatProperties + maxExtent::VkExtent3D + maxMipLevels::UInt32 + maxArrayLayers::UInt32 + sampleCounts::VkSampleCountFlags + maxResourceSize::VkDeviceSize +end + +struct VkInstanceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkInstanceCreateFlags + pApplicationInfo::Ptr{VkApplicationInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} +end + +struct VkMemoryHeap + size::VkDeviceSize + flags::VkMemoryHeapFlags +end + +struct VkMemoryType + propertyFlags::VkMemoryPropertyFlags + heapIndex::UInt32 +end + +struct VkPhysicalDeviceFeatures + robustBufferAccess::VkBool32 + fullDrawIndexUint32::VkBool32 + imageCubeArray::VkBool32 + independentBlend::VkBool32 + geometryShader::VkBool32 + tessellationShader::VkBool32 + sampleRateShading::VkBool32 + dualSrcBlend::VkBool32 + logicOp::VkBool32 + multiDrawIndirect::VkBool32 + drawIndirectFirstInstance::VkBool32 + depthClamp::VkBool32 + depthBiasClamp::VkBool32 + fillModeNonSolid::VkBool32 + depthBounds::VkBool32 + wideLines::VkBool32 + largePoints::VkBool32 + alphaToOne::VkBool32 + multiViewport::VkBool32 + samplerAnisotropy::VkBool32 + textureCompressionETC2::VkBool32 + textureCompressionASTC_LDR::VkBool32 + textureCompressionBC::VkBool32 + occlusionQueryPrecise::VkBool32 + pipelineStatisticsQuery::VkBool32 + vertexPipelineStoresAndAtomics::VkBool32 + fragmentStoresAndAtomics::VkBool32 + shaderTessellationAndGeometryPointSize::VkBool32 + shaderImageGatherExtended::VkBool32 + shaderStorageImageExtendedFormats::VkBool32 + shaderStorageImageMultisample::VkBool32 + shaderStorageImageReadWithoutFormat::VkBool32 + shaderStorageImageWriteWithoutFormat::VkBool32 + shaderUniformBufferArrayDynamicIndexing::VkBool32 + shaderSampledImageArrayDynamicIndexing::VkBool32 + shaderStorageBufferArrayDynamicIndexing::VkBool32 + shaderStorageImageArrayDynamicIndexing::VkBool32 + shaderClipDistance::VkBool32 + shaderCullDistance::VkBool32 + shaderFloat64::VkBool32 + shaderInt64::VkBool32 + shaderInt16::VkBool32 + shaderResourceResidency::VkBool32 + shaderResourceMinLod::VkBool32 + sparseBinding::VkBool32 + sparseResidencyBuffer::VkBool32 + sparseResidencyImage2D::VkBool32 + sparseResidencyImage3D::VkBool32 + sparseResidency2Samples::VkBool32 + sparseResidency4Samples::VkBool32 + sparseResidency8Samples::VkBool32 + sparseResidency16Samples::VkBool32 + sparseResidencyAliased::VkBool32 + variableMultisampleRate::VkBool32 + inheritedQueries::VkBool32 +end + +struct VkPhysicalDeviceLimits + maxImageDimension1D::UInt32 + maxImageDimension2D::UInt32 + maxImageDimension3D::UInt32 + maxImageDimensionCube::UInt32 + maxImageArrayLayers::UInt32 + maxTexelBufferElements::UInt32 + maxUniformBufferRange::UInt32 + maxStorageBufferRange::UInt32 + maxPushConstantsSize::UInt32 + maxMemoryAllocationCount::UInt32 + maxSamplerAllocationCount::UInt32 + bufferImageGranularity::VkDeviceSize + sparseAddressSpaceSize::VkDeviceSize + maxBoundDescriptorSets::UInt32 + maxPerStageDescriptorSamplers::UInt32 + maxPerStageDescriptorUniformBuffers::UInt32 + maxPerStageDescriptorStorageBuffers::UInt32 + maxPerStageDescriptorSampledImages::UInt32 + maxPerStageDescriptorStorageImages::UInt32 + maxPerStageDescriptorInputAttachments::UInt32 + maxPerStageResources::UInt32 + maxDescriptorSetSamplers::UInt32 + maxDescriptorSetUniformBuffers::UInt32 + maxDescriptorSetUniformBuffersDynamic::UInt32 + maxDescriptorSetStorageBuffers::UInt32 + maxDescriptorSetStorageBuffersDynamic::UInt32 + maxDescriptorSetSampledImages::UInt32 + maxDescriptorSetStorageImages::UInt32 + maxDescriptorSetInputAttachments::UInt32 + maxVertexInputAttributes::UInt32 + maxVertexInputBindings::UInt32 + maxVertexInputAttributeOffset::UInt32 + maxVertexInputBindingStride::UInt32 + maxVertexOutputComponents::UInt32 + maxTessellationGenerationLevel::UInt32 + maxTessellationPatchSize::UInt32 + maxTessellationControlPerVertexInputComponents::UInt32 + maxTessellationControlPerVertexOutputComponents::UInt32 + maxTessellationControlPerPatchOutputComponents::UInt32 + maxTessellationControlTotalOutputComponents::UInt32 + maxTessellationEvaluationInputComponents::UInt32 + maxTessellationEvaluationOutputComponents::UInt32 + maxGeometryShaderInvocations::UInt32 + maxGeometryInputComponents::UInt32 + maxGeometryOutputComponents::UInt32 + maxGeometryOutputVertices::UInt32 + maxGeometryTotalOutputComponents::UInt32 + maxFragmentInputComponents::UInt32 + maxFragmentOutputAttachments::UInt32 + maxFragmentDualSrcAttachments::UInt32 + maxFragmentCombinedOutputResources::UInt32 + maxComputeSharedMemorySize::UInt32 + maxComputeWorkGroupCount::NTuple{3, UInt32} + maxComputeWorkGroupInvocations::UInt32 + maxComputeWorkGroupSize::NTuple{3, UInt32} + subPixelPrecisionBits::UInt32 + subTexelPrecisionBits::UInt32 + mipmapPrecisionBits::UInt32 + maxDrawIndexedIndexValue::UInt32 + maxDrawIndirectCount::UInt32 + maxSamplerLodBias::Cfloat + maxSamplerAnisotropy::Cfloat + maxViewports::UInt32 + maxViewportDimensions::NTuple{2, UInt32} + viewportBoundsRange::NTuple{2, Cfloat} + viewportSubPixelBits::UInt32 + minMemoryMapAlignment::Csize_t + minTexelBufferOffsetAlignment::VkDeviceSize + minUniformBufferOffsetAlignment::VkDeviceSize + minStorageBufferOffsetAlignment::VkDeviceSize + minTexelOffset::Int32 + maxTexelOffset::UInt32 + minTexelGatherOffset::Int32 + maxTexelGatherOffset::UInt32 + minInterpolationOffset::Cfloat + maxInterpolationOffset::Cfloat + subPixelInterpolationOffsetBits::UInt32 + maxFramebufferWidth::UInt32 + maxFramebufferHeight::UInt32 + maxFramebufferLayers::UInt32 + framebufferColorSampleCounts::VkSampleCountFlags + framebufferDepthSampleCounts::VkSampleCountFlags + framebufferStencilSampleCounts::VkSampleCountFlags + framebufferNoAttachmentsSampleCounts::VkSampleCountFlags + maxColorAttachments::UInt32 + sampledImageColorSampleCounts::VkSampleCountFlags + sampledImageIntegerSampleCounts::VkSampleCountFlags + sampledImageDepthSampleCounts::VkSampleCountFlags + sampledImageStencilSampleCounts::VkSampleCountFlags + storageImageSampleCounts::VkSampleCountFlags + maxSampleMaskWords::UInt32 + timestampComputeAndGraphics::VkBool32 + timestampPeriod::Cfloat + maxClipDistances::UInt32 + maxCullDistances::UInt32 + maxCombinedClipAndCullDistances::UInt32 + discreteQueuePriorities::UInt32 + pointSizeRange::NTuple{2, Cfloat} + lineWidthRange::NTuple{2, Cfloat} + pointSizeGranularity::Cfloat + lineWidthGranularity::Cfloat + strictLines::VkBool32 + standardSampleLocations::VkBool32 + optimalBufferCopyOffsetAlignment::VkDeviceSize + optimalBufferCopyRowPitchAlignment::VkDeviceSize + nonCoherentAtomSize::VkDeviceSize +end + +struct VkPhysicalDeviceMemoryProperties + memoryTypeCount::UInt32 + memoryTypes::NTuple{32, VkMemoryType} + memoryHeapCount::UInt32 + memoryHeaps::NTuple{16, VkMemoryHeap} +end + +struct VkPhysicalDeviceSparseProperties + residencyStandard2DBlockShape::VkBool32 + residencyStandard2DMultisampleBlockShape::VkBool32 + residencyStandard3DBlockShape::VkBool32 + residencyAlignedMipSize::VkBool32 + residencyNonResidentStrict::VkBool32 +end + +struct VkPhysicalDeviceProperties + apiVersion::UInt32 + driverVersion::UInt32 + vendorID::UInt32 + deviceID::UInt32 + deviceType::VkPhysicalDeviceType + deviceName::NTuple{256, Cchar} + pipelineCacheUUID::NTuple{16, UInt8} + limits::VkPhysicalDeviceLimits + sparseProperties::VkPhysicalDeviceSparseProperties +end + +struct VkQueueFamilyProperties + queueFlags::VkQueueFlags + queueCount::UInt32 + timestampValidBits::UInt32 + minImageTransferGranularity::VkExtent3D +end + +struct VkDeviceQueueCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueCount::UInt32 + pQueuePriorities::Ptr{Cfloat} +end + +struct VkDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceCreateFlags + queueCreateInfoCount::UInt32 + pQueueCreateInfos::Ptr{VkDeviceQueueCreateInfo} + enabledLayerCount::UInt32 + ppEnabledLayerNames::Ptr{Ptr{Cchar}} + enabledExtensionCount::UInt32 + ppEnabledExtensionNames::Ptr{Ptr{Cchar}} + pEnabledFeatures::Ptr{VkPhysicalDeviceFeatures} +end + +struct VkExtensionProperties + extensionName::NTuple{256, Cchar} + specVersion::UInt32 +end + +struct VkLayerProperties + layerName::NTuple{256, Cchar} + specVersion::UInt32 + implementationVersion::UInt32 + description::NTuple{256, Cchar} +end + +struct VkSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + pWaitDstStageMask::Ptr{VkPipelineStageFlags} + commandBufferCount::UInt32 + pCommandBuffers::Ptr{VkCommandBuffer} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkMappedMemoryRange + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + offset::VkDeviceSize + size::VkDeviceSize +end + +struct VkMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + allocationSize::VkDeviceSize + memoryTypeIndex::UInt32 +end + +struct VkMemoryRequirements + size::VkDeviceSize + alignment::VkDeviceSize + memoryTypeBits::UInt32 +end + +struct VkSparseMemoryBind + resourceOffset::VkDeviceSize + size::VkDeviceSize + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseBufferMemoryBindInfo + buffer::VkBuffer + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkSparseImageOpaqueMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseMemoryBind} +end + +struct VkImageSubresource + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + arrayLayer::UInt32 +end + +struct VkSparseImageMemoryBind + subresource::VkImageSubresource + offset::VkOffset3D + extent::VkExtent3D + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + flags::VkSparseMemoryBindFlags +end + +struct VkSparseImageMemoryBindInfo + image::VkImage + bindCount::UInt32 + pBinds::Ptr{VkSparseImageMemoryBind} +end + +struct VkBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + bufferBindCount::UInt32 + pBufferBinds::Ptr{VkSparseBufferMemoryBindInfo} + imageOpaqueBindCount::UInt32 + pImageOpaqueBinds::Ptr{VkSparseImageOpaqueMemoryBindInfo} + imageBindCount::UInt32 + pImageBinds::Ptr{VkSparseImageMemoryBindInfo} + signalSemaphoreCount::UInt32 + pSignalSemaphores::Ptr{VkSemaphore} +end + +struct VkSparseImageFormatProperties + aspectMask::VkImageAspectFlags + imageGranularity::VkExtent3D + flags::VkSparseImageFormatFlags +end + +struct VkSparseImageMemoryRequirements + formatProperties::VkSparseImageFormatProperties + imageMipTailFirstLod::UInt32 + imageMipTailSize::VkDeviceSize + imageMipTailOffset::VkDeviceSize + imageMipTailStride::VkDeviceSize +end + +struct VkFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFenceCreateFlags +end + +struct VkSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreCreateFlags +end + +struct VkEventCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkEventCreateFlags +end + +struct VkQueryPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkQueryPoolCreateFlags + queryType::VkQueryType + queryCount::UInt32 + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + size::VkDeviceSize + usage::VkBufferUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkBufferViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferViewCreateFlags + buffer::VkBuffer + format::VkFormat + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + imageType::VkImageType + format::VkFormat + extent::VkExtent3D + mipLevels::UInt32 + arrayLayers::UInt32 + samples::VkSampleCountFlagBits + tiling::VkImageTiling + usage::VkImageUsageFlags + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + initialLayout::VkImageLayout +end + +struct VkSubresourceLayout + offset::VkDeviceSize + size::VkDeviceSize + rowPitch::VkDeviceSize + arrayPitch::VkDeviceSize + depthPitch::VkDeviceSize +end + +struct VkComponentMapping + r::VkComponentSwizzle + g::VkComponentSwizzle + b::VkComponentSwizzle + a::VkComponentSwizzle +end + +struct VkImageViewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageViewCreateFlags + image::VkImage + viewType::VkImageViewType + format::VkFormat + components::VkComponentMapping + subresourceRange::VkImageSubresourceRange +end + +struct VkShaderModuleCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkShaderModuleCreateFlags + codeSize::Csize_t + pCode::Ptr{UInt32} +end + +struct VkPipelineCacheCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCacheCreateFlags + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkSpecializationMapEntry + constantID::UInt32 + offset::UInt32 + size::Csize_t +end + +struct VkSpecializationInfo + mapEntryCount::UInt32 + pMapEntries::Ptr{VkSpecializationMapEntry} + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +struct VkPipelineShaderStageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineShaderStageCreateFlags + stage::VkShaderStageFlagBits + _module::VkShaderModule + pName::Ptr{Cchar} + pSpecializationInfo::Ptr{VkSpecializationInfo} +end + +struct VkComputePipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stage::VkPipelineShaderStageCreateInfo + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkVertexInputBindingDescription + binding::UInt32 + stride::UInt32 + inputRate::VkVertexInputRate +end + +struct VkVertexInputAttributeDescription + location::UInt32 + binding::UInt32 + format::VkFormat + offset::UInt32 +end + +struct VkPipelineVertexInputStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineVertexInputStateCreateFlags + vertexBindingDescriptionCount::UInt32 + pVertexBindingDescriptions::Ptr{VkVertexInputBindingDescription} + vertexAttributeDescriptionCount::UInt32 + pVertexAttributeDescriptions::Ptr{VkVertexInputAttributeDescription} +end + +struct VkPipelineInputAssemblyStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineInputAssemblyStateCreateFlags + topology::VkPrimitiveTopology + primitiveRestartEnable::VkBool32 +end + +struct VkPipelineTessellationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineTessellationStateCreateFlags + patchControlPoints::UInt32 +end + +struct VkViewport + x::Cfloat + y::Cfloat + width::Cfloat + height::Cfloat + minDepth::Cfloat + maxDepth::Cfloat +end + +struct VkPipelineViewportStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportStateCreateFlags + viewportCount::UInt32 + pViewports::Ptr{VkViewport} + scissorCount::UInt32 + pScissors::Ptr{VkRect2D} +end + +struct VkPipelineRasterizationStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateCreateFlags + depthClampEnable::VkBool32 + rasterizerDiscardEnable::VkBool32 + polygonMode::VkPolygonMode + cullMode::VkCullModeFlags + frontFace::VkFrontFace + depthBiasEnable::VkBool32 + depthBiasConstantFactor::Cfloat + depthBiasClamp::Cfloat + depthBiasSlopeFactor::Cfloat + lineWidth::Cfloat +end + +struct VkPipelineMultisampleStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineMultisampleStateCreateFlags + rasterizationSamples::VkSampleCountFlagBits + sampleShadingEnable::VkBool32 + minSampleShading::Cfloat + pSampleMask::Ptr{VkSampleMask} + alphaToCoverageEnable::VkBool32 + alphaToOneEnable::VkBool32 +end + +struct VkStencilOpState + failOp::VkStencilOp + passOp::VkStencilOp + depthFailOp::VkStencilOp + compareOp::VkCompareOp + compareMask::UInt32 + writeMask::UInt32 + reference::UInt32 +end + +struct VkPipelineDepthStencilStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDepthStencilStateCreateFlags + depthTestEnable::VkBool32 + depthWriteEnable::VkBool32 + depthCompareOp::VkCompareOp + depthBoundsTestEnable::VkBool32 + stencilTestEnable::VkBool32 + front::VkStencilOpState + back::VkStencilOpState + minDepthBounds::Cfloat + maxDepthBounds::Cfloat +end + +struct VkPipelineColorBlendAttachmentState + blendEnable::VkBool32 + srcColorBlendFactor::VkBlendFactor + dstColorBlendFactor::VkBlendFactor + colorBlendOp::VkBlendOp + srcAlphaBlendFactor::VkBlendFactor + dstAlphaBlendFactor::VkBlendFactor + alphaBlendOp::VkBlendOp + colorWriteMask::VkColorComponentFlags +end + +struct VkPipelineColorBlendStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineColorBlendStateCreateFlags + logicOpEnable::VkBool32 + logicOp::VkLogicOp + attachmentCount::UInt32 + pAttachments::Ptr{VkPipelineColorBlendAttachmentState} + blendConstants::NTuple{4, Cfloat} +end + +struct VkPipelineDynamicStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDynamicStateCreateFlags + dynamicStateCount::UInt32 + pDynamicStates::Ptr{VkDynamicState} +end + +struct VkGraphicsPipelineCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pInputAssemblyState::Ptr{VkPipelineInputAssemblyStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} + pViewportState::Ptr{VkPipelineViewportStateCreateInfo} + pRasterizationState::Ptr{VkPipelineRasterizationStateCreateInfo} + pMultisampleState::Ptr{VkPipelineMultisampleStateCreateInfo} + pDepthStencilState::Ptr{VkPipelineDepthStencilStateCreateInfo} + pColorBlendState::Ptr{VkPipelineColorBlendStateCreateInfo} + pDynamicState::Ptr{VkPipelineDynamicStateCreateInfo} + layout::VkPipelineLayout + renderPass::VkRenderPass + subpass::UInt32 + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkPushConstantRange + stageFlags::VkShaderStageFlags + offset::UInt32 + size::UInt32 +end + +struct VkPipelineLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineLayoutCreateFlags + setLayoutCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} + pushConstantRangeCount::UInt32 + pPushConstantRanges::Ptr{VkPushConstantRange} +end + +struct VkSamplerCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSamplerCreateFlags + magFilter::VkFilter + minFilter::VkFilter + mipmapMode::VkSamplerMipmapMode + addressModeU::VkSamplerAddressMode + addressModeV::VkSamplerAddressMode + addressModeW::VkSamplerAddressMode + mipLodBias::Cfloat + anisotropyEnable::VkBool32 + maxAnisotropy::Cfloat + compareEnable::VkBool32 + compareOp::VkCompareOp + minLod::Cfloat + maxLod::Cfloat + borderColor::VkBorderColor + unnormalizedCoordinates::VkBool32 +end + +struct VkCopyDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSet::VkDescriptorSet + srcBinding::UInt32 + srcArrayElement::UInt32 + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 +end + +struct VkDescriptorBufferInfo + buffer::VkBuffer + offset::VkDeviceSize + range::VkDeviceSize +end + +struct VkDescriptorImageInfo + sampler::VkSampler + imageView::VkImageView + imageLayout::VkImageLayout +end + +struct VkDescriptorPoolSize + type::VkDescriptorType + descriptorCount::UInt32 +end + +struct VkDescriptorPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorPoolCreateFlags + maxSets::UInt32 + poolSizeCount::UInt32 + pPoolSizes::Ptr{VkDescriptorPoolSize} +end + +struct VkDescriptorSetAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorPool::VkDescriptorPool + descriptorSetCount::UInt32 + pSetLayouts::Ptr{VkDescriptorSetLayout} +end + +struct VkDescriptorSetLayoutBinding + binding::UInt32 + descriptorType::VkDescriptorType + descriptorCount::UInt32 + stageFlags::VkShaderStageFlags + pImmutableSamplers::Ptr{VkSampler} +end + +struct VkDescriptorSetLayoutCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorSetLayoutCreateFlags + bindingCount::UInt32 + pBindings::Ptr{VkDescriptorSetLayoutBinding} +end + +struct VkWriteDescriptorSet + sType::VkStructureType + pNext::Ptr{Cvoid} + dstSet::VkDescriptorSet + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + pImageInfo::Ptr{VkDescriptorImageInfo} + pBufferInfo::Ptr{VkDescriptorBufferInfo} + pTexelBufferView::Ptr{VkBufferView} +end + +struct VkAttachmentDescription + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference + attachment::UInt32 + layout::VkImageLayout +end + +struct VkFramebufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkFramebufferCreateFlags + renderPass::VkRenderPass + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} + width::UInt32 + height::UInt32 + layers::UInt32 +end + +struct VkSubpassDescription + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference} + pResolveAttachments::Ptr{VkAttachmentReference} + pDepthStencilAttachment::Ptr{VkAttachmentReference} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags +end + +struct VkRenderPassCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency} +end + +struct VkCommandPoolCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandPoolCreateFlags + queueFamilyIndex::UInt32 +end + +struct VkCommandBufferAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + commandPool::VkCommandPool + level::VkCommandBufferLevel + commandBufferCount::UInt32 +end + +struct VkCommandBufferInheritanceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + subpass::UInt32 + framebuffer::VkFramebuffer + occlusionQueryEnable::VkBool32 + queryFlags::VkQueryControlFlags + pipelineStatistics::VkQueryPipelineStatisticFlags +end + +struct VkCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkCommandBufferUsageFlags + pInheritanceInfo::Ptr{VkCommandBufferInheritanceInfo} +end + +struct VkBufferCopy + srcOffset::VkDeviceSize + dstOffset::VkDeviceSize + size::VkDeviceSize +end + +struct VkImageSubresourceLayers + aspectMask::VkImageAspectFlags + mipLevel::UInt32 + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkBufferImageCopy + bufferOffset::VkDeviceSize + bufferRowLength::UInt32 + bufferImageHeight::UInt32 + imageSubresource::VkImageSubresourceLayers + imageOffset::VkOffset3D + imageExtent::VkExtent3D +end + +struct VkClearColorValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearColorValue}, f::Symbol) + f === :float32 && return Ptr{NTuple{4, Cfloat}}(x + 0) + f === :int32 && return Ptr{NTuple{4, Int32}}(x + 0) + f === :uint32 && return Ptr{NTuple{4, UInt32}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearColorValue, f::Symbol) + r = Ref{VkClearColorValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearColorValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearColorValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearDepthStencilValue + depth::Cfloat + stencil::UInt32 +end + +struct VkClearValue + data::NTuple{16, UInt8} +end + +function Base.getproperty(x::Ptr{VkClearValue}, f::Symbol) + f === :color && return Ptr{VkClearColorValue}(x + 0) + f === :depthStencil && return Ptr{VkClearDepthStencilValue}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkClearValue, f::Symbol) + r = Ref{VkClearValue}(x) + ptr = Base.unsafe_convert(Ptr{VkClearValue}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkClearValue}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkClearAttachment + aspectMask::VkImageAspectFlags + colorAttachment::UInt32 + clearValue::VkClearValue +end + +struct VkClearRect + rect::VkRect2D + baseArrayLayer::UInt32 + layerCount::UInt32 +end + +struct VkImageBlit + srcSubresource::VkImageSubresourceLayers + srcOffsets::NTuple{2, VkOffset3D} + dstSubresource::VkImageSubresourceLayers + dstOffsets::NTuple{2, VkOffset3D} +end + +struct VkImageCopy + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkImageResolve + srcSubresource::VkImageSubresourceLayers + srcOffset::VkOffset3D + dstSubresource::VkImageSubresourceLayers + dstOffset::VkOffset3D + extent::VkExtent3D +end + +struct VkRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + renderPass::VkRenderPass + framebuffer::VkFramebuffer + renderArea::VkRect2D + clearValueCount::UInt32 + pClearValues::Ptr{VkClearValue} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateInstance ) ( const VkInstanceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkInstance * pInstance ) +const PFN_vkCreateInstance = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyInstance ) ( VkInstance instance , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyInstance = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDevices ) ( VkInstance instance , uint32_t * pPhysicalDeviceCount , VkPhysicalDevice * pPhysicalDevices ) +const PFN_vkEnumeratePhysicalDevices = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkImageFormatProperties * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties * pProperties ) +const PFN_vkGetPhysicalDeviceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetInstanceProcAddr ) ( VkInstance instance , const char * pName ) +const PFN_vkGetInstanceProcAddr = Ptr{Cvoid} + +# typedef PFN_vkVoidFunction ( VKAPI_PTR * PFN_vkGetDeviceProcAddr ) ( VkDevice device , const char * pName ) +const PFN_vkGetDeviceProcAddr = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDevice ) ( VkPhysicalDevice physicalDevice , const VkDeviceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDevice * pDevice ) +const PFN_vkCreateDevice = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDevice ) ( VkDevice device , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDevice = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties ) ( const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateInstanceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceExtensionProperties ) ( VkPhysicalDevice physicalDevice , const char * pLayerName , uint32_t * pPropertyCount , VkExtensionProperties * pProperties ) +const PFN_vkEnumerateDeviceExtensionProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceLayerProperties ) ( uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateInstanceLayerProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateDeviceLayerProperties ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkLayerProperties * pProperties ) +const PFN_vkEnumerateDeviceLayerProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue ) ( VkDevice device , uint32_t queueFamilyIndex , uint32_t queueIndex , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSubmit ) ( VkQueue queue , uint32_t submitCount , const VkSubmitInfo * pSubmits , VkFence fence ) +const PFN_vkQueueSubmit = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueWaitIdle ) ( VkQueue queue ) +const PFN_vkQueueWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDeviceWaitIdle ) ( VkDevice device ) +const PFN_vkDeviceWaitIdle = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateMemory ) ( VkDevice device , const VkMemoryAllocateInfo * pAllocateInfo , const VkAllocationCallbacks * pAllocator , VkDeviceMemory * pMemory ) +const PFN_vkAllocateMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeMemory ) ( VkDevice device , VkDeviceMemory memory , const VkAllocationCallbacks * pAllocator ) +const PFN_vkFreeMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMapMemory ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize offset , VkDeviceSize size , VkMemoryMapFlags flags , void * * ppData ) +const PFN_vkMapMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUnmapMemory ) ( VkDevice device , VkDeviceMemory memory ) +const PFN_vkUnmapMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFlushMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkFlushMappedMemoryRanges = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkInvalidateMappedMemoryRanges ) ( VkDevice device , uint32_t memoryRangeCount , const VkMappedMemoryRange * pMemoryRanges ) +const PFN_vkInvalidateMappedMemoryRanges = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceMemoryCommitment ) ( VkDevice device , VkDeviceMemory memory , VkDeviceSize * pCommittedMemoryInBytes ) +const PFN_vkGetDeviceMemoryCommitment = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory ) ( VkDevice device , VkBuffer buffer , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindBufferMemory = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory ) ( VkDevice device , VkImage image , VkDeviceMemory memory , VkDeviceSize memoryOffset ) +const PFN_vkBindImageMemory = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements ) ( VkDevice device , VkBuffer buffer , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements ) ( VkDevice device , VkImage image , VkMemoryRequirements * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements ) ( VkDevice device , VkImage image , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkSampleCountFlagBits samples , VkImageUsageFlags usage , VkImageTiling tiling , uint32_t * pPropertyCount , VkSparseImageFormatProperties * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueBindSparse ) ( VkQueue queue , uint32_t bindInfoCount , const VkBindSparseInfo * pBindInfo , VkFence fence ) +const PFN_vkQueueBindSparse = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFence ) ( VkDevice device , const VkFenceCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkCreateFence = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFence ) ( VkDevice device , VkFence fence , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFence = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences ) +const PFN_vkResetFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceStatus ) ( VkDevice device , VkFence fence ) +const PFN_vkGetFenceStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitForFences ) ( VkDevice device , uint32_t fenceCount , const VkFence * pFences , VkBool32 waitAll , uint64_t timeout ) +const PFN_vkWaitForFences = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSemaphore ) ( VkDevice device , const VkSemaphoreCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSemaphore * pSemaphore ) +const PFN_vkCreateSemaphore = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySemaphore ) ( VkDevice device , VkSemaphore semaphore , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySemaphore = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateEvent ) ( VkDevice device , const VkEventCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkEvent * pEvent ) +const PFN_vkCreateEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyEvent ) ( VkDevice device , VkEvent event , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetEventStatus ) ( VkDevice device , VkEvent event ) +const PFN_vkGetEventStatus = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkSetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetEvent ) ( VkDevice device , VkEvent event ) +const PFN_vkResetEvent = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateQueryPool ) ( VkDevice device , const VkQueryPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkQueryPool * pQueryPool ) +const PFN_vkCreateQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyQueryPool ) ( VkDevice device , VkQueryPool queryPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetQueryPoolResults ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , size_t dataSize , void * pData , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkGetQueryPoolResults = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBuffer ) ( VkDevice device , const VkBufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBuffer * pBuffer ) +const PFN_vkCreateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBuffer ) ( VkDevice device , VkBuffer buffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateBufferView ) ( VkDevice device , const VkBufferViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkBufferView * pView ) +const PFN_vkCreateBufferView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyBufferView ) ( VkDevice device , VkBufferView bufferView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyBufferView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImage ) ( VkDevice device , const VkImageCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImage * pImage ) +const PFN_vkCreateImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImage ) ( VkDevice device , VkImage image , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSubresourceLayout ) ( VkDevice device , VkImage image , const VkImageSubresource * pSubresource , VkSubresourceLayout * pLayout ) +const PFN_vkGetImageSubresourceLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateImageView ) ( VkDevice device , const VkImageViewCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkImageView * pView ) +const PFN_vkCreateImageView = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyImageView ) ( VkDevice device , VkImageView imageView , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyImageView = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateShaderModule ) ( VkDevice device , const VkShaderModuleCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkShaderModule * pShaderModule ) +const PFN_vkCreateShaderModule = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyShaderModule ) ( VkDevice device , VkShaderModule shaderModule , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyShaderModule = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineCache ) ( VkDevice device , const VkPipelineCacheCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineCache * pPipelineCache ) +const PFN_vkCreatePipelineCache = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineCache ) ( VkDevice device , VkPipelineCache pipelineCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineCache = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineCacheData ) ( VkDevice device , VkPipelineCache pipelineCache , size_t * pDataSize , void * pData ) +const PFN_vkGetPipelineCacheData = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergePipelineCaches ) ( VkDevice device , VkPipelineCache dstCache , uint32_t srcCacheCount , const VkPipelineCache * pSrcCaches ) +const PFN_vkMergePipelineCaches = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateGraphicsPipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkGraphicsPipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateGraphicsPipelines = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateComputePipelines ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkComputePipelineCreateInfo * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateComputePipelines = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipeline ) ( VkDevice device , VkPipeline pipeline , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipeline = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePipelineLayout ) ( VkDevice device , const VkPipelineLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPipelineLayout * pPipelineLayout ) +const PFN_vkCreatePipelineLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPipelineLayout ) ( VkDevice device , VkPipelineLayout pipelineLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPipelineLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSampler ) ( VkDevice device , const VkSamplerCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSampler * pSampler ) +const PFN_vkCreateSampler = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySampler ) ( VkDevice device , VkSampler sampler , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySampler = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorSetLayout ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorSetLayout * pSetLayout ) +const PFN_vkCreateDescriptorSetLayout = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorSetLayout ) ( VkDevice device , VkDescriptorSetLayout descriptorSetLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorSetLayout = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorPool ) ( VkDevice device , const VkDescriptorPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorPool * pDescriptorPool ) +const PFN_vkCreateDescriptorPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetDescriptorPool ) ( VkDevice device , VkDescriptorPool descriptorPool , VkDescriptorPoolResetFlags flags ) +const PFN_vkResetDescriptorPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateDescriptorSets ) ( VkDevice device , const VkDescriptorSetAllocateInfo * pAllocateInfo , VkDescriptorSet * pDescriptorSets ) +const PFN_vkAllocateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkFreeDescriptorSets ) ( VkDevice device , VkDescriptorPool descriptorPool , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets ) +const PFN_vkFreeDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSets ) ( VkDevice device , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites , uint32_t descriptorCopyCount , const VkCopyDescriptorSet * pDescriptorCopies ) +const PFN_vkUpdateDescriptorSets = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateFramebuffer ) ( VkDevice device , const VkFramebufferCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkFramebuffer * pFramebuffer ) +const PFN_vkCreateFramebuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyFramebuffer ) ( VkDevice device , VkFramebuffer framebuffer , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyFramebuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass ) ( VkDevice device , const VkRenderPassCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyRenderPass ) ( VkDevice device , VkRenderPass renderPass , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetRenderAreaGranularity ) ( VkDevice device , VkRenderPass renderPass , VkExtent2D * pGranularity ) +const PFN_vkGetRenderAreaGranularity = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateCommandPool ) ( VkDevice device , const VkCommandPoolCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkCommandPool * pCommandPool ) +const PFN_vkCreateCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyCommandPool ) ( VkDevice device , VkCommandPool commandPool , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolResetFlags flags ) +const PFN_vkResetCommandPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAllocateCommandBuffers ) ( VkDevice device , const VkCommandBufferAllocateInfo * pAllocateInfo , VkCommandBuffer * pCommandBuffers ) +const PFN_vkAllocateCommandBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkFreeCommandBuffers ) ( VkDevice device , VkCommandPool commandPool , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkFreeCommandBuffers = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBeginCommandBuffer ) ( VkCommandBuffer commandBuffer , const VkCommandBufferBeginInfo * pBeginInfo ) +const PFN_vkBeginCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEndCommandBuffer ) ( VkCommandBuffer commandBuffer ) +const PFN_vkEndCommandBuffer = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkResetCommandBuffer ) ( VkCommandBuffer commandBuffer , VkCommandBufferResetFlags flags ) +const PFN_vkResetCommandBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipeline ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline ) +const PFN_vkCmdBindPipeline = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewport ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewport = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissor ) ( VkCommandBuffer commandBuffer , uint32_t firstScissor , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissor = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineWidth ) ( VkCommandBuffer commandBuffer , float lineWidth ) +const PFN_vkCmdSetLineWidth = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBias ) ( VkCommandBuffer commandBuffer , float depthBiasConstantFactor , float depthBiasClamp , float depthBiasSlopeFactor ) +const PFN_vkCmdSetDepthBias = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetBlendConstants ) ( VkCommandBuffer commandBuffer , const float blendConstants [ 4 ] ) +const PFN_vkCmdSetBlendConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBounds ) ( VkCommandBuffer commandBuffer , float minDepthBounds , float maxDepthBounds ) +const PFN_vkCmdSetDepthBounds = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilCompareMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t compareMask ) +const PFN_vkCmdSetStencilCompareMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilWriteMask ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t writeMask ) +const PFN_vkCmdSetStencilWriteMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilReference ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , uint32_t reference ) +const PFN_vkCmdSetStencilReference = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindDescriptorSets ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t firstSet , uint32_t descriptorSetCount , const VkDescriptorSet * pDescriptorSets , uint32_t dynamicOffsetCount , const uint32_t * pDynamicOffsets ) +const PFN_vkCmdBindDescriptorSets = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindIndexBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkIndexType indexType ) +const PFN_vkCmdBindIndexBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets ) +const PFN_vkCmdBindVertexBuffers = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDraw ) ( VkCommandBuffer commandBuffer , uint32_t vertexCount , uint32_t instanceCount , uint32_t firstVertex , uint32_t firstInstance ) +const PFN_vkCmdDraw = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexed ) ( VkCommandBuffer commandBuffer , uint32_t indexCount , uint32_t instanceCount , uint32_t firstIndex , int32_t vertexOffset , uint32_t firstInstance ) +const PFN_vkCmdDrawIndexed = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatch ) ( VkCommandBuffer commandBuffer , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatch = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchIndirect ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset ) +const PFN_vkCmdDispatchIndirect = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferCopy * pRegions ) +const PFN_vkCmdCopyBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageCopy * pRegions ) +const PFN_vkCmdCopyImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBlitImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageBlit * pRegions , VkFilter filter ) +const PFN_vkCmdBlitImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyBufferToImage ) ( VkCommandBuffer commandBuffer , VkBuffer srcBuffer , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyBufferToImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyImageToBuffer ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkBuffer dstBuffer , uint32_t regionCount , const VkBufferImageCopy * pRegions ) +const PFN_vkCmdCopyImageToBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdUpdateBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize dataSize , const void * pData ) +const PFN_vkCmdUpdateBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdFillBuffer ) ( VkCommandBuffer commandBuffer , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize size , uint32_t data ) +const PFN_vkCmdFillBuffer = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearColorImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearColorValue * pColor , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearColorImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearDepthStencilImage ) ( VkCommandBuffer commandBuffer , VkImage image , VkImageLayout imageLayout , const VkClearDepthStencilValue * pDepthStencil , uint32_t rangeCount , const VkImageSubresourceRange * pRanges ) +const PFN_vkCmdClearDepthStencilImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdClearAttachments ) ( VkCommandBuffer commandBuffer , uint32_t attachmentCount , const VkClearAttachment * pAttachments , uint32_t rectCount , const VkClearRect * pRects ) +const PFN_vkCmdClearAttachments = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResolveImage ) ( VkCommandBuffer commandBuffer , VkImage srcImage , VkImageLayout srcImageLayout , VkImage dstImage , VkImageLayout dstImageLayout , uint32_t regionCount , const VkImageResolve * pRegions ) +const PFN_vkCmdResolveImage = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdSetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetEvent ) ( VkCommandBuffer commandBuffer , VkEvent event , VkPipelineStageFlags stageMask ) +const PFN_vkCmdResetEvent = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWaitEvents ) ( VkCommandBuffer commandBuffer , uint32_t eventCount , const VkEvent * pEvents , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdWaitEvents = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPipelineBarrier ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlags srcStageMask , VkPipelineStageFlags dstStageMask , VkDependencyFlags dependencyFlags , uint32_t memoryBarrierCount , const VkMemoryBarrier * pMemoryBarriers , uint32_t bufferMemoryBarrierCount , const VkBufferMemoryBarrier * pBufferMemoryBarriers , uint32_t imageMemoryBarrierCount , const VkImageMemoryBarrier * pImageMemoryBarriers ) +const PFN_vkCmdPipelineBarrier = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags ) +const PFN_vkCmdBeginQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQuery ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdEndQuery = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdResetQueryPool ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkCmdResetQueryPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteTimestamp ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkQueryPool queryPool , uint32_t query ) +const PFN_vkCmdWriteTimestamp = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyQueryPoolResults ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount , VkBuffer dstBuffer , VkDeviceSize dstOffset , VkDeviceSize stride , VkQueryResultFlags flags ) +const PFN_vkCmdCopyQueryPoolResults = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushConstants ) ( VkCommandBuffer commandBuffer , VkPipelineLayout layout , VkShaderStageFlags stageFlags , uint32_t offset , uint32_t size , const void * pValues ) +const PFN_vkCmdPushConstants = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , VkSubpassContents contents ) +const PFN_vkCmdBeginRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass ) ( VkCommandBuffer commandBuffer , VkSubpassContents contents ) +const PFN_vkCmdNextSubpass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndRenderPass = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteCommands ) ( VkCommandBuffer commandBuffer , uint32_t commandBufferCount , const VkCommandBuffer * pCommandBuffers ) +const PFN_vkCmdExecuteCommands = Ptr{Cvoid} + +function vkCreateInstance(pCreateInfo, pAllocator, pInstance) + ccall((:vkCreateInstance, libvulkan), VkResult, (Ptr{VkInstanceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkInstance}), pCreateInfo, pAllocator, pInstance) +end + +function vkDestroyInstance(instance, pAllocator) + ccall((:vkDestroyInstance, libvulkan), Cvoid, (VkInstance, Ptr{VkAllocationCallbacks}), instance, pAllocator) +end + +function vkEnumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices) + ccall((:vkEnumeratePhysicalDevices, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDevice}), instance, pPhysicalDeviceCount, pPhysicalDevices) +end + +function vkGetPhysicalDeviceFeatures(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, Ptr{VkImageFormatProperties}), physicalDevice, format, type, tiling, usage, flags, pImageFormatProperties) +end + +function vkGetPhysicalDeviceProperties(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties}), physicalDevice, pMemoryProperties) +end + +function vkGetInstanceProcAddr(instance, pName) + ccall((:vkGetInstanceProcAddr, libvulkan), PFN_vkVoidFunction, (VkInstance, Ptr{Cchar}), instance, pName) +end + +function vkGetDeviceProcAddr(device, pName) + ccall((:vkGetDeviceProcAddr, libvulkan), PFN_vkVoidFunction, (VkDevice, Ptr{Cchar}), device, pName) +end + +function vkCreateDevice(physicalDevice, pCreateInfo, pAllocator, pDevice) + ccall((:vkCreateDevice, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDeviceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDevice}), physicalDevice, pCreateInfo, pAllocator, pDevice) +end + +function vkDestroyDevice(device, pAllocator) + ccall((:vkDestroyDevice, libvulkan), Cvoid, (VkDevice, Ptr{VkAllocationCallbacks}), device, pAllocator) +end + +function vkEnumerateInstanceExtensionProperties(pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceExtensionProperties, libvulkan), VkResult, (Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateDeviceExtensionProperties(physicalDevice, pLayerName, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceExtensionProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{Cchar}, Ptr{UInt32}, Ptr{VkExtensionProperties}), physicalDevice, pLayerName, pPropertyCount, pProperties) +end + +function vkEnumerateInstanceLayerProperties(pPropertyCount, pProperties) + ccall((:vkEnumerateInstanceLayerProperties, libvulkan), VkResult, (Ptr{UInt32}, Ptr{VkLayerProperties}), pPropertyCount, pProperties) +end + +function vkEnumerateDeviceLayerProperties(physicalDevice, pPropertyCount, pProperties) + ccall((:vkEnumerateDeviceLayerProperties, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkLayerProperties}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue) + ccall((:vkGetDeviceQueue, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, Ptr{VkQueue}), device, queueFamilyIndex, queueIndex, pQueue) +end + +function vkQueueSubmit(queue, submitCount, pSubmits, fence) + ccall((:vkQueueSubmit, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkSubmitInfo}, VkFence), queue, submitCount, pSubmits, fence) +end + +function vkQueueWaitIdle(queue) + ccall((:vkQueueWaitIdle, libvulkan), VkResult, (VkQueue,), queue) +end + +function vkDeviceWaitIdle(device) + ccall((:vkDeviceWaitIdle, libvulkan), VkResult, (VkDevice,), device) +end + +function vkAllocateMemory(device, pAllocateInfo, pAllocator, pMemory) + ccall((:vkAllocateMemory, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryAllocateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDeviceMemory}), device, pAllocateInfo, pAllocator, pMemory) +end + +function vkFreeMemory(device, memory, pAllocator) + ccall((:vkFreeMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkAllocationCallbacks}), device, memory, pAllocator) +end + +function vkMapMemory(device, memory, offset, size, flags, ppData) + ccall((:vkMapMemory, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkDeviceSize, VkDeviceSize, VkMemoryMapFlags, Ptr{Ptr{Cvoid}}), device, memory, offset, size, flags, ppData) +end + +function vkUnmapMemory(device, memory) + ccall((:vkUnmapMemory, libvulkan), Cvoid, (VkDevice, VkDeviceMemory), device, memory) +end + +function vkFlushMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkFlushMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkInvalidateMappedMemoryRanges(device, memoryRangeCount, pMemoryRanges) + ccall((:vkInvalidateMappedMemoryRanges, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkMappedMemoryRange}), device, memoryRangeCount, pMemoryRanges) +end + +function vkGetDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes) + ccall((:vkGetDeviceMemoryCommitment, libvulkan), Cvoid, (VkDevice, VkDeviceMemory, Ptr{VkDeviceSize}), device, memory, pCommittedMemoryInBytes) +end + +function vkBindBufferMemory(device, buffer, memory, memoryOffset) + ccall((:vkBindBufferMemory, libvulkan), VkResult, (VkDevice, VkBuffer, VkDeviceMemory, VkDeviceSize), device, buffer, memory, memoryOffset) +end + +function vkBindImageMemory(device, image, memory, memoryOffset) + ccall((:vkBindImageMemory, libvulkan), VkResult, (VkDevice, VkImage, VkDeviceMemory, VkDeviceSize), device, image, memory, memoryOffset) +end + +function vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkMemoryRequirements}), device, buffer, pMemoryRequirements) +end + +function vkGetImageMemoryRequirements(device, image, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkMemoryRequirements}), device, image, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements(device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements}), device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, VkImageType, VkSampleCountFlagBits, VkImageUsageFlags, VkImageTiling, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties}), physicalDevice, format, type, samples, usage, tiling, pPropertyCount, pProperties) +end + +function vkQueueBindSparse(queue, bindInfoCount, pBindInfo, fence) + ccall((:vkQueueBindSparse, libvulkan), VkResult, (VkQueue, UInt32, Ptr{VkBindSparseInfo}, VkFence), queue, bindInfoCount, pBindInfo, fence) +end + +function vkCreateFence(device, pCreateInfo, pAllocator, pFence) + ccall((:vkCreateFence, libvulkan), VkResult, (VkDevice, Ptr{VkFenceCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pCreateInfo, pAllocator, pFence) +end + +function vkDestroyFence(device, fence, pAllocator) + ccall((:vkDestroyFence, libvulkan), Cvoid, (VkDevice, VkFence, Ptr{VkAllocationCallbacks}), device, fence, pAllocator) +end + +function vkResetFences(device, fenceCount, pFences) + ccall((:vkResetFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}), device, fenceCount, pFences) +end + +function vkGetFenceStatus(device, fence) + ccall((:vkGetFenceStatus, libvulkan), VkResult, (VkDevice, VkFence), device, fence) +end + +function vkWaitForFences(device, fenceCount, pFences, waitAll, timeout) + ccall((:vkWaitForFences, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkFence}, VkBool32, UInt64), device, fenceCount, pFences, waitAll, timeout) +end + +function vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore) + ccall((:vkCreateSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSemaphore}), device, pCreateInfo, pAllocator, pSemaphore) +end + +function vkDestroySemaphore(device, semaphore, pAllocator) + ccall((:vkDestroySemaphore, libvulkan), Cvoid, (VkDevice, VkSemaphore, Ptr{VkAllocationCallbacks}), device, semaphore, pAllocator) +end + +function vkCreateEvent(device, pCreateInfo, pAllocator, pEvent) + ccall((:vkCreateEvent, libvulkan), VkResult, (VkDevice, Ptr{VkEventCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkEvent}), device, pCreateInfo, pAllocator, pEvent) +end + +function vkDestroyEvent(device, event, pAllocator) + ccall((:vkDestroyEvent, libvulkan), Cvoid, (VkDevice, VkEvent, Ptr{VkAllocationCallbacks}), device, event, pAllocator) +end + +function vkGetEventStatus(device, event) + ccall((:vkGetEventStatus, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkSetEvent(device, event) + ccall((:vkSetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkResetEvent(device, event) + ccall((:vkResetEvent, libvulkan), VkResult, (VkDevice, VkEvent), device, event) +end + +function vkCreateQueryPool(device, pCreateInfo, pAllocator, pQueryPool) + ccall((:vkCreateQueryPool, libvulkan), VkResult, (VkDevice, Ptr{VkQueryPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkQueryPool}), device, pCreateInfo, pAllocator, pQueryPool) +end + +function vkDestroyQueryPool(device, queryPool, pAllocator) + ccall((:vkDestroyQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, Ptr{VkAllocationCallbacks}), device, queryPool, pAllocator) +end + +function vkGetQueryPoolResults(device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) + ccall((:vkGetQueryPoolResults, libvulkan), VkResult, (VkDevice, VkQueryPool, UInt32, UInt32, Csize_t, Ptr{Cvoid}, VkDeviceSize, VkQueryResultFlags), device, queryPool, firstQuery, queryCount, dataSize, pData, stride, flags) +end + +function vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer) + ccall((:vkCreateBuffer, libvulkan), VkResult, (VkDevice, Ptr{VkBufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBuffer}), device, pCreateInfo, pAllocator, pBuffer) +end + +function vkDestroyBuffer(device, buffer, pAllocator) + ccall((:vkDestroyBuffer, libvulkan), Cvoid, (VkDevice, VkBuffer, Ptr{VkAllocationCallbacks}), device, buffer, pAllocator) +end + +function vkCreateBufferView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateBufferView, libvulkan), VkResult, (VkDevice, Ptr{VkBufferViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkBufferView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyBufferView(device, bufferView, pAllocator) + ccall((:vkDestroyBufferView, libvulkan), Cvoid, (VkDevice, VkBufferView, Ptr{VkAllocationCallbacks}), device, bufferView, pAllocator) +end + +function vkCreateImage(device, pCreateInfo, pAllocator, pImage) + ccall((:vkCreateImage, libvulkan), VkResult, (VkDevice, Ptr{VkImageCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImage}), device, pCreateInfo, pAllocator, pImage) +end + +function vkDestroyImage(device, image, pAllocator) + ccall((:vkDestroyImage, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkAllocationCallbacks}), device, image, pAllocator) +end + +function vkGetImageSubresourceLayout(device, image, pSubresource, pLayout) + ccall((:vkGetImageSubresourceLayout, libvulkan), Cvoid, (VkDevice, VkImage, Ptr{VkImageSubresource}, Ptr{VkSubresourceLayout}), device, image, pSubresource, pLayout) +end + +function vkCreateImageView(device, pCreateInfo, pAllocator, pView) + ccall((:vkCreateImageView, libvulkan), VkResult, (VkDevice, Ptr{VkImageViewCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkImageView}), device, pCreateInfo, pAllocator, pView) +end + +function vkDestroyImageView(device, imageView, pAllocator) + ccall((:vkDestroyImageView, libvulkan), Cvoid, (VkDevice, VkImageView, Ptr{VkAllocationCallbacks}), device, imageView, pAllocator) +end + +function vkCreateShaderModule(device, pCreateInfo, pAllocator, pShaderModule) + ccall((:vkCreateShaderModule, libvulkan), VkResult, (VkDevice, Ptr{VkShaderModuleCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkShaderModule}), device, pCreateInfo, pAllocator, pShaderModule) +end + +function vkDestroyShaderModule(device, shaderModule, pAllocator) + ccall((:vkDestroyShaderModule, libvulkan), Cvoid, (VkDevice, VkShaderModule, Ptr{VkAllocationCallbacks}), device, shaderModule, pAllocator) +end + +function vkCreatePipelineCache(device, pCreateInfo, pAllocator, pPipelineCache) + ccall((:vkCreatePipelineCache, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineCacheCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineCache}), device, pCreateInfo, pAllocator, pPipelineCache) +end + +function vkDestroyPipelineCache(device, pipelineCache, pAllocator) + ccall((:vkDestroyPipelineCache, libvulkan), Cvoid, (VkDevice, VkPipelineCache, Ptr{VkAllocationCallbacks}), device, pipelineCache, pAllocator) +end + +function vkGetPipelineCacheData(device, pipelineCache, pDataSize, pData) + ccall((:vkGetPipelineCacheData, libvulkan), VkResult, (VkDevice, VkPipelineCache, Ptr{Csize_t}, Ptr{Cvoid}), device, pipelineCache, pDataSize, pData) +end + +function vkMergePipelineCaches(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergePipelineCaches, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkPipelineCache}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateGraphicsPipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkGraphicsPipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateComputePipelines, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkComputePipelineCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkDestroyPipeline(device, pipeline, pAllocator) + ccall((:vkDestroyPipeline, libvulkan), Cvoid, (VkDevice, VkPipeline, Ptr{VkAllocationCallbacks}), device, pipeline, pAllocator) +end + +function vkCreatePipelineLayout(device, pCreateInfo, pAllocator, pPipelineLayout) + ccall((:vkCreatePipelineLayout, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkPipelineLayout}), device, pCreateInfo, pAllocator, pPipelineLayout) +end + +function vkDestroyPipelineLayout(device, pipelineLayout, pAllocator) + ccall((:vkDestroyPipelineLayout, libvulkan), Cvoid, (VkDevice, VkPipelineLayout, Ptr{VkAllocationCallbacks}), device, pipelineLayout, pAllocator) +end + +function vkCreateSampler(device, pCreateInfo, pAllocator, pSampler) + ccall((:vkCreateSampler, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSampler}), device, pCreateInfo, pAllocator, pSampler) +end + +function vkDestroySampler(device, sampler, pAllocator) + ccall((:vkDestroySampler, libvulkan), Cvoid, (VkDevice, VkSampler, Ptr{VkAllocationCallbacks}), device, sampler, pAllocator) +end + +function vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout) + ccall((:vkCreateDescriptorSetLayout, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorSetLayout}), device, pCreateInfo, pAllocator, pSetLayout) +end + +function vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator) + ccall((:vkDestroyDescriptorSetLayout, libvulkan), Cvoid, (VkDevice, VkDescriptorSetLayout, Ptr{VkAllocationCallbacks}), device, descriptorSetLayout, pAllocator) +end + +function vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool) + ccall((:vkCreateDescriptorPool, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorPool}), device, pCreateInfo, pAllocator, pDescriptorPool) +end + +function vkDestroyDescriptorPool(device, descriptorPool, pAllocator) + ccall((:vkDestroyDescriptorPool, libvulkan), Cvoid, (VkDevice, VkDescriptorPool, Ptr{VkAllocationCallbacks}), device, descriptorPool, pAllocator) +end + +function vkResetDescriptorPool(device, descriptorPool, flags) + ccall((:vkResetDescriptorPool, libvulkan), VkResult, (VkDevice, VkDescriptorPool, VkDescriptorPoolResetFlags), device, descriptorPool, flags) +end + +function vkAllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets) + ccall((:vkAllocateDescriptorSets, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorSetAllocateInfo}, Ptr{VkDescriptorSet}), device, pAllocateInfo, pDescriptorSets) +end + +function vkFreeDescriptorSets(device, descriptorPool, descriptorSetCount, pDescriptorSets) + ccall((:vkFreeDescriptorSets, libvulkan), VkResult, (VkDevice, VkDescriptorPool, UInt32, Ptr{VkDescriptorSet}), device, descriptorPool, descriptorSetCount, pDescriptorSets) +end + +function vkUpdateDescriptorSets(device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) + ccall((:vkUpdateDescriptorSets, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkWriteDescriptorSet}, UInt32, Ptr{VkCopyDescriptorSet}), device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies) +end + +function vkCreateFramebuffer(device, pCreateInfo, pAllocator, pFramebuffer) + ccall((:vkCreateFramebuffer, libvulkan), VkResult, (VkDevice, Ptr{VkFramebufferCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkFramebuffer}), device, pCreateInfo, pAllocator, pFramebuffer) +end + +function vkDestroyFramebuffer(device, framebuffer, pAllocator) + ccall((:vkDestroyFramebuffer, libvulkan), Cvoid, (VkDevice, VkFramebuffer, Ptr{VkAllocationCallbacks}), device, framebuffer, pAllocator) +end + +function vkCreateRenderPass(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkDestroyRenderPass(device, renderPass, pAllocator) + ccall((:vkDestroyRenderPass, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkAllocationCallbacks}), device, renderPass, pAllocator) +end + +function vkGetRenderAreaGranularity(device, renderPass, pGranularity) + ccall((:vkGetRenderAreaGranularity, libvulkan), Cvoid, (VkDevice, VkRenderPass, Ptr{VkExtent2D}), device, renderPass, pGranularity) +end + +function vkCreateCommandPool(device, pCreateInfo, pAllocator, pCommandPool) + ccall((:vkCreateCommandPool, libvulkan), VkResult, (VkDevice, Ptr{VkCommandPoolCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkCommandPool}), device, pCreateInfo, pAllocator, pCommandPool) +end + +function vkDestroyCommandPool(device, commandPool, pAllocator) + ccall((:vkDestroyCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, Ptr{VkAllocationCallbacks}), device, commandPool, pAllocator) +end + +function vkResetCommandPool(device, commandPool, flags) + ccall((:vkResetCommandPool, libvulkan), VkResult, (VkDevice, VkCommandPool, VkCommandPoolResetFlags), device, commandPool, flags) +end + +function vkAllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers) + ccall((:vkAllocateCommandBuffers, libvulkan), VkResult, (VkDevice, Ptr{VkCommandBufferAllocateInfo}, Ptr{VkCommandBuffer}), device, pAllocateInfo, pCommandBuffers) +end + +function vkFreeCommandBuffers(device, commandPool, commandBufferCount, pCommandBuffers) + ccall((:vkFreeCommandBuffers, libvulkan), Cvoid, (VkDevice, VkCommandPool, UInt32, Ptr{VkCommandBuffer}), device, commandPool, commandBufferCount, pCommandBuffers) +end + +function vkBeginCommandBuffer(commandBuffer, pBeginInfo) + ccall((:vkBeginCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkCommandBufferBeginInfo}), commandBuffer, pBeginInfo) +end + +function vkEndCommandBuffer(commandBuffer) + ccall((:vkEndCommandBuffer, libvulkan), VkResult, (VkCommandBuffer,), commandBuffer) +end + +function vkResetCommandBuffer(commandBuffer, flags) + ccall((:vkResetCommandBuffer, libvulkan), VkResult, (VkCommandBuffer, VkCommandBufferResetFlags), commandBuffer, flags) +end + +function vkCmdBindPipeline(commandBuffer, pipelineBindPoint, pipeline) + ccall((:vkCmdBindPipeline, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline), commandBuffer, pipelineBindPoint, pipeline) +end + +function vkCmdSetViewport(commandBuffer, firstViewport, viewportCount, pViewports) + ccall((:vkCmdSetViewport, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewport}), commandBuffer, firstViewport, viewportCount, pViewports) +end + +function vkCmdSetScissor(commandBuffer, firstScissor, scissorCount, pScissors) + ccall((:vkCmdSetScissor, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstScissor, scissorCount, pScissors) +end + +function vkCmdSetLineWidth(commandBuffer, lineWidth) + ccall((:vkCmdSetLineWidth, libvulkan), Cvoid, (VkCommandBuffer, Cfloat), commandBuffer, lineWidth) +end + +function vkCmdSetDepthBias(commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) + ccall((:vkCmdSetDepthBias, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat, Cfloat), commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor) +end + +function vkCmdSetBlendConstants(commandBuffer, blendConstants) + ccall((:vkCmdSetBlendConstants, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cfloat}), commandBuffer, blendConstants) +end + +function vkCmdSetDepthBounds(commandBuffer, minDepthBounds, maxDepthBounds) + ccall((:vkCmdSetDepthBounds, libvulkan), Cvoid, (VkCommandBuffer, Cfloat, Cfloat), commandBuffer, minDepthBounds, maxDepthBounds) +end + +function vkCmdSetStencilCompareMask(commandBuffer, faceMask, compareMask) + ccall((:vkCmdSetStencilCompareMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, compareMask) +end + +function vkCmdSetStencilWriteMask(commandBuffer, faceMask, writeMask) + ccall((:vkCmdSetStencilWriteMask, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, writeMask) +end + +function vkCmdSetStencilReference(commandBuffer, faceMask, reference) + ccall((:vkCmdSetStencilReference, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, UInt32), commandBuffer, faceMask, reference) +end + +function vkCmdBindDescriptorSets(commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) + ccall((:vkCmdBindDescriptorSets, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkDescriptorSet}, UInt32, Ptr{UInt32}), commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets) +end + +function vkCmdBindIndexBuffer(commandBuffer, buffer, offset, indexType) + ccall((:vkCmdBindIndexBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkIndexType), commandBuffer, buffer, offset, indexType) +end + +function vkCmdBindVertexBuffers(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) + ccall((:vkCmdBindVertexBuffers, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets) +end + +function vkCmdDraw(commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) + ccall((:vkCmdDraw, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32), commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance) +end + +function vkCmdDrawIndexed(commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) + ccall((:vkCmdDrawIndexed, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, Int32, UInt32), commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance) +end + +function vkCmdDrawIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawIndexedIndirect(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawIndexedIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDispatch(commandBuffer, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatch, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32), commandBuffer, groupCountX, groupCountY, groupCountZ) +end + +function vkCmdDispatchIndirect(commandBuffer, buffer, offset) + ccall((:vkCmdDispatchIndirect, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize), commandBuffer, buffer, offset) +end + +function vkCmdCopyBuffer(commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkBuffer, UInt32, Ptr{VkBufferCopy}), commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions) +end + +function vkCmdCopyImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageCopy}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdBlitImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) + ccall((:vkCmdBlitImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageBlit}, VkFilter), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter) +end + +function vkCmdCopyBufferToImage(commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdCopyBufferToImage, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkImage, VkImageLayout, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdCopyImageToBuffer(commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) + ccall((:vkCmdCopyImageToBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkBuffer, UInt32, Ptr{VkBufferImageCopy}), commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions) +end + +function vkCmdUpdateBuffer(commandBuffer, dstBuffer, dstOffset, dataSize, pData) + ccall((:vkCmdUpdateBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, Ptr{Cvoid}), commandBuffer, dstBuffer, dstOffset, dataSize, pData) +end + +function vkCmdFillBuffer(commandBuffer, dstBuffer, dstOffset, size, data) + ccall((:vkCmdFillBuffer, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32), commandBuffer, dstBuffer, dstOffset, size, data) +end + +function vkCmdClearColorImage(commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) + ccall((:vkCmdClearColorImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearColorValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pColor, rangeCount, pRanges) +end + +function vkCmdClearDepthStencilImage(commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) + ccall((:vkCmdClearDepthStencilImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, Ptr{VkClearDepthStencilValue}, UInt32, Ptr{VkImageSubresourceRange}), commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges) +end + +function vkCmdClearAttachments(commandBuffer, attachmentCount, pAttachments, rectCount, pRects) + ccall((:vkCmdClearAttachments, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkClearAttachment}, UInt32, Ptr{VkClearRect}), commandBuffer, attachmentCount, pAttachments, rectCount, pRects) +end + +function vkCmdResolveImage(commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) + ccall((:vkCmdResolveImage, libvulkan), Cvoid, (VkCommandBuffer, VkImage, VkImageLayout, VkImage, VkImageLayout, UInt32, Ptr{VkImageResolve}), commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions) +end + +function vkCmdSetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdSetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdResetEvent(commandBuffer, event, stageMask) + ccall((:vkCmdResetEvent, libvulkan), Cvoid, (VkCommandBuffer, VkEvent, VkPipelineStageFlags), commandBuffer, event, stageMask) +end + +function vkCmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdWaitEvents, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkEvent}, VkPipelineStageFlags, VkPipelineStageFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) + ccall((:vkCmdPipelineBarrier, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlags, VkPipelineStageFlags, VkDependencyFlags, UInt32, Ptr{VkMemoryBarrier}, UInt32, Ptr{VkBufferMemoryBarrier}, UInt32, Ptr{VkImageMemoryBarrier}), commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers) +end + +function vkCmdBeginQuery(commandBuffer, queryPool, query, flags) + ccall((:vkCmdBeginQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags), commandBuffer, queryPool, query, flags) +end + +function vkCmdEndQuery(commandBuffer, queryPool, query) + ccall((:vkCmdEndQuery, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32), commandBuffer, queryPool, query) +end + +function vkCmdResetQueryPool(commandBuffer, queryPool, firstQuery, queryCount) + ccall((:vkCmdResetQueryPool, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, firstQuery, queryCount) +end + +function vkCmdWriteTimestamp(commandBuffer, pipelineStage, queryPool, query) + ccall((:vkCmdWriteTimestamp, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkQueryPool, UInt32), commandBuffer, pipelineStage, queryPool, query) +end + +function vkCmdCopyQueryPoolResults(commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) + ccall((:vkCmdCopyQueryPoolResults, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32, VkBuffer, VkDeviceSize, VkDeviceSize, VkQueryResultFlags), commandBuffer, queryPool, firstQuery, queryCount, dstBuffer, dstOffset, stride, flags) +end + +function vkCmdPushConstants(commandBuffer, layout, stageFlags, offset, size, pValues) + ccall((:vkCmdPushConstants, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineLayout, VkShaderStageFlags, UInt32, UInt32, Ptr{Cvoid}), commandBuffer, layout, stageFlags, offset, size, pValues) +end + +function vkCmdBeginRenderPass(commandBuffer, pRenderPassBegin, contents) + ccall((:vkCmdBeginRenderPass, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, VkSubpassContents), commandBuffer, pRenderPassBegin, contents) +end + +function vkCmdNextSubpass(commandBuffer, contents) + ccall((:vkCmdNextSubpass, libvulkan), Cvoid, (VkCommandBuffer, VkSubpassContents), commandBuffer, contents) +end + +function vkCmdEndRenderPass(commandBuffer) + ccall((:vkCmdEndRenderPass, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdExecuteCommands(commandBuffer, commandBufferCount, pCommandBuffers) + ccall((:vkCmdExecuteCommands, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkCommandBuffer}), commandBuffer, commandBufferCount, pCommandBuffers) +end + +const VkSamplerYcbcrConversion_T = Cvoid + +const VkSamplerYcbcrConversion = Ptr{VkSamplerYcbcrConversion_T} + +const VkDescriptorUpdateTemplate_T = Cvoid + +const VkDescriptorUpdateTemplate = Ptr{VkDescriptorUpdateTemplate_T} + +@cenum VkPointClippingBehavior::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkTessellationDomainOrigin::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrModelConversion::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerYcbcrRange::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkChromaLocation::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkDescriptorUpdateTemplateType::UInt32 begin + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSubgroupFeatureFlagBits::UInt32 begin + 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 +end + +const VkSubgroupFeatureFlags = VkFlags + +@cenum VkPeerMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkPeerMemoryFeatureFlags = VkFlags + +@cenum VkMemoryAllocateFlagBits::UInt32 begin + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 4 + VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 1 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = 2 + VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 4 + VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkMemoryAllocateFlags = VkFlags + +const VkCommandPoolTrimFlags = VkFlags + +const VkDescriptorUpdateTemplateCreateFlags = VkFlags + +@cenum VkExternalMemoryHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlags = VkFlags + +@cenum VkExternalMemoryFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlags = VkFlags + +@cenum VkExternalFenceHandleTypeFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceHandleTypeFlags = VkFlags + +@cenum VkExternalFenceFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalFenceFeatureFlags = VkFlags + +@cenum VkFenceImportFlagBits::UInt32 begin + VK_FENCE_IMPORT_TEMPORARY_BIT = 1 + VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkFenceImportFlags = VkFlags + +@cenum VkSemaphoreImportFlagBits::UInt32 begin + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 1 + VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 1 + VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreImportFlags = VkFlags + +@cenum VkExternalSemaphoreHandleTypeFlagBits::UInt32 begin + 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_D3D11_FENCE_BIT = 8 + 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 +end + +const VkExternalSemaphoreHandleTypeFlags = VkFlags + +@cenum VkExternalSemaphoreFeatureFlagBits::UInt32 begin + 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 +end + +const VkExternalSemaphoreFeatureFlags = VkFlags + +struct VkPhysicalDeviceSubgroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSize::UInt32 + supportedStages::VkShaderStageFlags + supportedOperations::VkSubgroupFeatureFlags + quadOperationsInAllStages::VkBool32 +end + +struct VkBindBufferMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkBindImageMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + memory::VkDeviceMemory + memoryOffset::VkDeviceSize +end + +struct VkPhysicalDevice16BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 +end + +struct VkMemoryDedicatedRequirements + sType::VkStructureType + pNext::Ptr{Cvoid} + prefersDedicatedAllocation::VkBool32 + requiresDedicatedAllocation::VkBool32 +end + +struct VkMemoryDedicatedAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +struct VkMemoryAllocateFlagsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkMemoryAllocateFlags + deviceMask::UInt32 +end + +struct VkDeviceGroupRenderPassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 + deviceRenderAreaCount::UInt32 + pDeviceRenderAreas::Ptr{VkRect2D} +end + +struct VkDeviceGroupCommandBufferBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceMask::UInt32 +end + +struct VkDeviceGroupSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphoreDeviceIndices::Ptr{UInt32} + commandBufferCount::UInt32 + pCommandBufferDeviceMasks::Ptr{UInt32} + signalSemaphoreCount::UInt32 + pSignalSemaphoreDeviceIndices::Ptr{UInt32} +end + +struct VkDeviceGroupBindSparseInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + resourceDeviceIndex::UInt32 + memoryDeviceIndex::UInt32 +end + +struct VkBindBufferMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +struct VkBindImageMemoryDeviceGroupInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} + splitInstanceBindRegionCount::UInt32 + pSplitInstanceBindRegions::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceGroupProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + physicalDevices::NTuple{32, VkPhysicalDevice} + subsetAllocation::VkBool32 +end + +struct VkDeviceGroupDeviceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + physicalDeviceCount::UInt32 + pPhysicalDevices::Ptr{VkPhysicalDevice} +end + +struct VkBufferMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkImageMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkImageSparseMemoryRequirementsInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage +end + +struct VkMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkMemoryRequirements +end + +struct VkSparseImageMemoryRequirements2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryRequirements::VkSparseImageMemoryRequirements +end + +struct VkPhysicalDeviceFeatures2 + sType::VkStructureType + pNext::Ptr{Cvoid} + features::VkPhysicalDeviceFeatures +end + +struct VkPhysicalDeviceProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkPhysicalDeviceProperties +end + +struct VkFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + formatProperties::VkFormatProperties +end + +struct VkImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFormatProperties::VkImageFormatProperties +end + +struct VkPhysicalDeviceImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + tiling::VkImageTiling + usage::VkImageUsageFlags + flags::VkImageCreateFlags +end + +struct VkQueueFamilyProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyProperties::VkQueueFamilyProperties +end + +struct VkPhysicalDeviceMemoryProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryProperties::VkPhysicalDeviceMemoryProperties +end + +struct VkSparseImageFormatProperties2 + sType::VkStructureType + pNext::Ptr{Cvoid} + properties::VkSparseImageFormatProperties +end + +struct VkPhysicalDeviceSparseImageFormatInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + type::VkImageType + samples::VkSampleCountFlagBits + usage::VkImageUsageFlags + tiling::VkImageTiling +end + +struct VkPhysicalDevicePointClippingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + pointClippingBehavior::VkPointClippingBehavior +end + +struct VkInputAttachmentAspectReference + subpass::UInt32 + inputAttachmentIndex::UInt32 + aspectMask::VkImageAspectFlags +end + +struct VkRenderPassInputAttachmentAspectCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + aspectReferenceCount::UInt32 + pAspectReferences::Ptr{VkInputAttachmentAspectReference} +end + +struct VkImageViewUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + usage::VkImageUsageFlags +end + +struct VkPipelineTessellationDomainOriginStateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + domainOrigin::VkTessellationDomainOrigin +end + +struct VkRenderPassMultiviewCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + subpassCount::UInt32 + pViewMasks::Ptr{UInt32} + dependencyCount::UInt32 + pViewOffsets::Ptr{Int32} + correlationMaskCount::UInt32 + pCorrelationMasks::Ptr{UInt32} +end + +struct VkPhysicalDeviceMultiviewFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 +end + +struct VkPhysicalDeviceMultiviewProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 +end + +struct VkPhysicalDeviceVariablePointersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 +end + +const VkPhysicalDeviceVariablePointerFeatures = VkPhysicalDeviceVariablePointersFeatures + +struct VkPhysicalDeviceProtectedMemoryFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedMemory::VkBool32 +end + +struct VkPhysicalDeviceProtectedMemoryProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedNoFault::VkBool32 +end + +struct VkDeviceQueueInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceQueueCreateFlags + queueFamilyIndex::UInt32 + queueIndex::UInt32 +end + +struct VkProtectedSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + protectedSubmit::VkBool32 +end + +struct VkSamplerYcbcrConversionCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + format::VkFormat + ycbcrModel::VkSamplerYcbcrModelConversion + ycbcrRange::VkSamplerYcbcrRange + components::VkComponentMapping + xChromaOffset::VkChromaLocation + yChromaOffset::VkChromaLocation + chromaFilter::VkFilter + forceExplicitReconstruction::VkBool32 +end + +struct VkSamplerYcbcrConversionInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + conversion::VkSamplerYcbcrConversion +end + +struct VkBindImagePlaneMemoryInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkImagePlaneMemoryRequirementsInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + planeAspect::VkImageAspectFlagBits +end + +struct VkPhysicalDeviceSamplerYcbcrConversionFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerYcbcrConversion::VkBool32 +end + +struct VkSamplerYcbcrConversionImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + combinedImageSamplerDescriptorCount::UInt32 +end + +struct VkDescriptorUpdateTemplateEntry + dstBinding::UInt32 + dstArrayElement::UInt32 + descriptorCount::UInt32 + descriptorType::VkDescriptorType + offset::Csize_t + stride::Csize_t +end + +struct VkDescriptorUpdateTemplateCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDescriptorUpdateTemplateCreateFlags + descriptorUpdateEntryCount::UInt32 + pDescriptorUpdateEntries::Ptr{VkDescriptorUpdateTemplateEntry} + templateType::VkDescriptorUpdateTemplateType + descriptorSetLayout::VkDescriptorSetLayout + pipelineBindPoint::VkPipelineBindPoint + pipelineLayout::VkPipelineLayout + set::UInt32 +end + +struct VkExternalMemoryProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlags + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlags + compatibleHandleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalImageFormatInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalImageFormatProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceExternalBufferInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkBufferCreateFlags + usage::VkBufferUsageFlags + handleType::VkExternalMemoryHandleTypeFlagBits +end + +struct VkExternalBufferProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + externalMemoryProperties::VkExternalMemoryProperties +end + +struct VkPhysicalDeviceIDProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 +end + +struct VkExternalMemoryImageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExternalMemoryBufferCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkExportMemoryAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlags +end + +struct VkPhysicalDeviceExternalFenceInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalFenceHandleTypeFlagBits +end + +struct VkExternalFenceProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalFenceHandleTypeFlags + compatibleHandleTypes::VkExternalFenceHandleTypeFlags + externalFenceFeatures::VkExternalFenceFeatureFlags +end + +struct VkExportFenceCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalFenceHandleTypeFlags +end + +struct VkExportSemaphoreCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalSemaphoreHandleTypeFlags +end + +struct VkPhysicalDeviceExternalSemaphoreInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +struct VkExternalSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + exportFromImportedHandleTypes::VkExternalSemaphoreHandleTypeFlags + compatibleHandleTypes::VkExternalSemaphoreHandleTypeFlags + externalSemaphoreFeatures::VkExternalSemaphoreFeatureFlags +end + +struct VkPhysicalDeviceMaintenance3Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkDescriptorSetLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + supported::VkBool32 +end + +struct VkPhysicalDeviceShaderDrawParametersFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDrawParameters::VkBool32 +end + +const VkPhysicalDeviceShaderDrawParameterFeatures = VkPhysicalDeviceShaderDrawParametersFeatures + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumerateInstanceVersion ) ( uint32_t * pApiVersion ) +const PFN_vkEnumerateInstanceVersion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2 ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeatures ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeatures = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMask ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMask = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBase ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBase = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroups ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroups = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2 ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2 ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2 ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2 ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2 ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2 ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPool ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPool = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceQueue2 ) ( VkDevice device , const VkDeviceQueueInfo2 * pQueueInfo , VkQueue * pQueue ) +const PFN_vkGetDeviceQueue2 = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversion ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversion = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversion ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversion = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplate ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplate ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplate ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplate = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFenceProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFenceProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphoreProperties ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphoreProperties = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupport ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupport = Ptr{Cvoid} + +function vkEnumerateInstanceVersion(pApiVersion) + ccall((:vkEnumerateInstanceVersion, libvulkan), VkResult, (Ptr{UInt32},), pApiVersion) +end + +function vkBindBufferMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkGetDeviceGroupPeerMemoryFeatures(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeatures, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMask(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMask, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBase(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBase, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +function vkEnumeratePhysicalDeviceGroups(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroups, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +function vkGetImageMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +function vkGetPhysicalDeviceFeatures2(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +function vkTrimCommandPool(device, commandPool, flags) + ccall((:vkTrimCommandPool, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +function vkGetDeviceQueue2(device, pQueueInfo, pQueue) + ccall((:vkGetDeviceQueue2, libvulkan), Cvoid, (VkDevice, Ptr{VkDeviceQueueInfo2}, Ptr{VkQueue}), device, pQueueInfo, pQueue) +end + +function vkCreateSamplerYcbcrConversion(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversion, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversion(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversion, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +function vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplate, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplate(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplate, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +function vkGetPhysicalDeviceExternalBufferProperties(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +function vkGetPhysicalDeviceExternalFenceProperties(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFenceProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +function vkGetPhysicalDeviceExternalSemaphoreProperties(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphoreProperties, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +function vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupport, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +@cenum VkDriverId::UInt32 begin + VK_DRIVER_ID_AMD_PROPRIETARY = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE = 2 + VK_DRIVER_ID_MESA_RADV = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8 + VK_DRIVER_ID_ARM_PROPRIETARY = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10 + VK_DRIVER_ID_GGP_PROPRIETARY = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12 + VK_DRIVER_ID_MESA_LLVMPIPE = 13 + VK_DRIVER_ID_MOLTENVK = 14 + VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1 + VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2 + VK_DRIVER_ID_MESA_RADV_KHR = 3 + VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4 + VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5 + VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6 + VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7 + VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8 + VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9 + VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = 10 + VK_DRIVER_ID_GGP_PROPRIETARY_KHR = 11 + VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = 12 + VK_DRIVER_ID_MAX_ENUM = 2147483647 +end + +@cenum VkShaderFloatControlsIndependence::UInt32 begin + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = 0 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = 1 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = 2 + VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 2147483647 +end + +@cenum VkSamplerReductionMode::UInt32 begin + VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0 + VK_SAMPLER_REDUCTION_MODE_MIN = 1 + VK_SAMPLER_REDUCTION_MODE_MAX = 2 + 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_MAX_ENUM = 2147483647 +end + +@cenum VkSemaphoreType::UInt32 begin + VK_SEMAPHORE_TYPE_BINARY = 0 + VK_SEMAPHORE_TYPE_TIMELINE = 1 + VK_SEMAPHORE_TYPE_BINARY_KHR = 0 + VK_SEMAPHORE_TYPE_TIMELINE_KHR = 1 + VK_SEMAPHORE_TYPE_MAX_ENUM = 2147483647 +end + +@cenum VkResolveModeFlagBits::UInt32 begin + VK_RESOLVE_MODE_NONE = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 1 + VK_RESOLVE_MODE_AVERAGE_BIT = 2 + VK_RESOLVE_MODE_MIN_BIT = 4 + VK_RESOLVE_MODE_MAX_BIT = 8 + VK_RESOLVE_MODE_NONE_KHR = 0 + VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 1 + VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 2 + VK_RESOLVE_MODE_MIN_BIT_KHR = 4 + VK_RESOLVE_MODE_MAX_BIT_KHR = 8 + VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkResolveModeFlags = VkFlags + +@cenum VkDescriptorBindingFlagBits::UInt32 begin + VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 1 + VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 2 + VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 4 + VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 8 + VK_DESCRIPTOR_BINDING_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 = 2147483647 +end + +const VkDescriptorBindingFlags = VkFlags + +@cenum VkSemaphoreWaitFlagBits::UInt32 begin + VK_SEMAPHORE_WAIT_ANY_BIT = 1 + VK_SEMAPHORE_WAIT_ANY_BIT_KHR = 1 + VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 2147483647 +end + +const VkSemaphoreWaitFlags = VkFlags + +struct VkPhysicalDeviceVulkan11Features + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer16BitAccess::VkBool32 + uniformAndStorageBuffer16BitAccess::VkBool32 + storagePushConstant16::VkBool32 + storageInputOutput16::VkBool32 + multiview::VkBool32 + multiviewGeometryShader::VkBool32 + multiviewTessellationShader::VkBool32 + variablePointersStorageBuffer::VkBool32 + variablePointers::VkBool32 + protectedMemory::VkBool32 + samplerYcbcrConversion::VkBool32 + shaderDrawParameters::VkBool32 +end + +struct VkPhysicalDeviceVulkan11Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceUUID::NTuple{16, UInt8} + driverUUID::NTuple{16, UInt8} + deviceLUID::NTuple{8, UInt8} + deviceNodeMask::UInt32 + deviceLUIDValid::VkBool32 + subgroupSize::UInt32 + subgroupSupportedStages::VkShaderStageFlags + subgroupSupportedOperations::VkSubgroupFeatureFlags + subgroupQuadOperationsInAllStages::VkBool32 + pointClippingBehavior::VkPointClippingBehavior + maxMultiviewViewCount::UInt32 + maxMultiviewInstanceIndex::UInt32 + protectedNoFault::VkBool32 + maxPerSetDescriptors::UInt32 + maxMemoryAllocationSize::VkDeviceSize +end + +struct VkPhysicalDeviceVulkan12Features + sType::VkStructureType + pNext::Ptr{Cvoid} + samplerMirrorClampToEdge::VkBool32 + drawIndirectCount::VkBool32 + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 + shaderFloat16::VkBool32 + shaderInt8::VkBool32 + descriptorIndexing::VkBool32 + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 + samplerFilterMinmax::VkBool32 + scalarBlockLayout::VkBool32 + imagelessFramebuffer::VkBool32 + uniformBufferStandardLayout::VkBool32 + shaderSubgroupExtendedTypes::VkBool32 + separateDepthStencilLayouts::VkBool32 + hostQueryReset::VkBool32 + timelineSemaphore::VkBool32 + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 + shaderOutputViewportIndex::VkBool32 + shaderOutputLayer::VkBool32 + subgroupBroadcastDynamicId::VkBool32 +end + +struct VkConformanceVersion + major::UInt8 + minor::UInt8 + subminor::UInt8 + patch::UInt8 +end + +struct VkPhysicalDeviceVulkan12Properties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 + maxTimelineSemaphoreValueDifference::UInt64 + framebufferIntegerColorSampleCounts::VkSampleCountFlags +end + +struct VkImageFormatListCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkAttachmentDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAttachmentDescriptionFlags + format::VkFormat + samples::VkSampleCountFlagBits + loadOp::VkAttachmentLoadOp + storeOp::VkAttachmentStoreOp + stencilLoadOp::VkAttachmentLoadOp + stencilStoreOp::VkAttachmentStoreOp + initialLayout::VkImageLayout + finalLayout::VkImageLayout +end + +struct VkAttachmentReference2 + sType::VkStructureType + pNext::Ptr{Cvoid} + attachment::UInt32 + layout::VkImageLayout + aspectMask::VkImageAspectFlags +end + +struct VkSubpassDescription2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSubpassDescriptionFlags + pipelineBindPoint::VkPipelineBindPoint + viewMask::UInt32 + inputAttachmentCount::UInt32 + pInputAttachments::Ptr{VkAttachmentReference2} + colorAttachmentCount::UInt32 + pColorAttachments::Ptr{VkAttachmentReference2} + pResolveAttachments::Ptr{VkAttachmentReference2} + pDepthStencilAttachment::Ptr{VkAttachmentReference2} + preserveAttachmentCount::UInt32 + pPreserveAttachments::Ptr{UInt32} +end + +struct VkSubpassDependency2 + sType::VkStructureType + pNext::Ptr{Cvoid} + srcSubpass::UInt32 + dstSubpass::UInt32 + srcStageMask::VkPipelineStageFlags + dstStageMask::VkPipelineStageFlags + srcAccessMask::VkAccessFlags + dstAccessMask::VkAccessFlags + dependencyFlags::VkDependencyFlags + viewOffset::Int32 +end + +struct VkRenderPassCreateInfo2 + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkRenderPassCreateFlags + attachmentCount::UInt32 + pAttachments::Ptr{VkAttachmentDescription2} + subpassCount::UInt32 + pSubpasses::Ptr{VkSubpassDescription2} + dependencyCount::UInt32 + pDependencies::Ptr{VkSubpassDependency2} + correlatedViewMaskCount::UInt32 + pCorrelatedViewMasks::Ptr{UInt32} +end + +struct VkSubpassBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + contents::VkSubpassContents +end + +struct VkSubpassEndInfo + sType::VkStructureType + pNext::Ptr{Cvoid} +end + +struct VkPhysicalDevice8BitStorageFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + storageBuffer8BitAccess::VkBool32 + uniformAndStorageBuffer8BitAccess::VkBool32 + storagePushConstant8::VkBool32 +end + +struct VkPhysicalDeviceDriverProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + driverID::VkDriverId + driverName::NTuple{256, Cchar} + driverInfo::NTuple{256, Cchar} + conformanceVersion::VkConformanceVersion +end + +struct VkPhysicalDeviceShaderAtomicInt64Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferInt64Atomics::VkBool32 + shaderSharedInt64Atomics::VkBool32 +end + +struct VkPhysicalDeviceShaderFloat16Int8Features + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderFloat16::VkBool32 + shaderInt8::VkBool32 +end + +struct VkPhysicalDeviceFloatControlsProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + denormBehaviorIndependence::VkShaderFloatControlsIndependence + roundingModeIndependence::VkShaderFloatControlsIndependence + shaderSignedZeroInfNanPreserveFloat16::VkBool32 + shaderSignedZeroInfNanPreserveFloat32::VkBool32 + shaderSignedZeroInfNanPreserveFloat64::VkBool32 + shaderDenormPreserveFloat16::VkBool32 + shaderDenormPreserveFloat32::VkBool32 + shaderDenormPreserveFloat64::VkBool32 + shaderDenormFlushToZeroFloat16::VkBool32 + shaderDenormFlushToZeroFloat32::VkBool32 + shaderDenormFlushToZeroFloat64::VkBool32 + shaderRoundingModeRTEFloat16::VkBool32 + shaderRoundingModeRTEFloat32::VkBool32 + shaderRoundingModeRTEFloat64::VkBool32 + shaderRoundingModeRTZFloat16::VkBool32 + shaderRoundingModeRTZFloat32::VkBool32 + shaderRoundingModeRTZFloat64::VkBool32 +end + +struct VkDescriptorSetLayoutBindingFlagsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + bindingCount::UInt32 + pBindingFlags::Ptr{VkDescriptorBindingFlags} +end + +struct VkPhysicalDeviceDescriptorIndexingFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderInputAttachmentArrayDynamicIndexing::VkBool32 + shaderUniformTexelBufferArrayDynamicIndexing::VkBool32 + shaderStorageTexelBufferArrayDynamicIndexing::VkBool32 + shaderUniformBufferArrayNonUniformIndexing::VkBool32 + shaderSampledImageArrayNonUniformIndexing::VkBool32 + shaderStorageBufferArrayNonUniformIndexing::VkBool32 + shaderStorageImageArrayNonUniformIndexing::VkBool32 + shaderInputAttachmentArrayNonUniformIndexing::VkBool32 + shaderUniformTexelBufferArrayNonUniformIndexing::VkBool32 + shaderStorageTexelBufferArrayNonUniformIndexing::VkBool32 + descriptorBindingUniformBufferUpdateAfterBind::VkBool32 + descriptorBindingSampledImageUpdateAfterBind::VkBool32 + descriptorBindingStorageImageUpdateAfterBind::VkBool32 + descriptorBindingStorageBufferUpdateAfterBind::VkBool32 + descriptorBindingUniformTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingStorageTexelBufferUpdateAfterBind::VkBool32 + descriptorBindingUpdateUnusedWhilePending::VkBool32 + descriptorBindingPartiallyBound::VkBool32 + descriptorBindingVariableDescriptorCount::VkBool32 + runtimeDescriptorArray::VkBool32 +end + +struct VkPhysicalDeviceDescriptorIndexingProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxUpdateAfterBindDescriptorsInAllPools::UInt32 + shaderUniformBufferArrayNonUniformIndexingNative::VkBool32 + shaderSampledImageArrayNonUniformIndexingNative::VkBool32 + shaderStorageBufferArrayNonUniformIndexingNative::VkBool32 + shaderStorageImageArrayNonUniformIndexingNative::VkBool32 + shaderInputAttachmentArrayNonUniformIndexingNative::VkBool32 + robustBufferAccessUpdateAfterBind::VkBool32 + quadDivergentImplicitLod::VkBool32 + maxPerStageDescriptorUpdateAfterBindSamplers::UInt32 + maxPerStageDescriptorUpdateAfterBindUniformBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageBuffers::UInt32 + maxPerStageDescriptorUpdateAfterBindSampledImages::UInt32 + maxPerStageDescriptorUpdateAfterBindStorageImages::UInt32 + maxPerStageDescriptorUpdateAfterBindInputAttachments::UInt32 + maxPerStageUpdateAfterBindResources::UInt32 + maxDescriptorSetUpdateAfterBindSamplers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffers::UInt32 + maxDescriptorSetUpdateAfterBindUniformBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffers::UInt32 + maxDescriptorSetUpdateAfterBindStorageBuffersDynamic::UInt32 + maxDescriptorSetUpdateAfterBindSampledImages::UInt32 + maxDescriptorSetUpdateAfterBindStorageImages::UInt32 + maxDescriptorSetUpdateAfterBindInputAttachments::UInt32 +end + +struct VkDescriptorSetVariableDescriptorCountAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + descriptorSetCount::UInt32 + pDescriptorCounts::Ptr{UInt32} +end + +struct VkDescriptorSetVariableDescriptorCountLayoutSupport + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVariableDescriptorCount::UInt32 +end + +struct VkSubpassDescriptionDepthStencilResolve + sType::VkStructureType + pNext::Ptr{Cvoid} + depthResolveMode::VkResolveModeFlagBits + stencilResolveMode::VkResolveModeFlagBits + pDepthStencilResolveAttachment::Ptr{VkAttachmentReference2} +end + +struct VkPhysicalDeviceDepthStencilResolveProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + supportedDepthResolveModes::VkResolveModeFlags + supportedStencilResolveModes::VkResolveModeFlags + independentResolveNone::VkBool32 + independentResolve::VkBool32 +end + +struct VkPhysicalDeviceScalarBlockLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + scalarBlockLayout::VkBool32 +end + +struct VkImageStencilUsageCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilUsage::VkImageUsageFlags +end + +struct VkSamplerReductionModeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + reductionMode::VkSamplerReductionMode +end + +struct VkPhysicalDeviceSamplerFilterMinmaxProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + filterMinmaxSingleComponentFormats::VkBool32 + filterMinmaxImageComponentMapping::VkBool32 +end + +struct VkPhysicalDeviceVulkanMemoryModelFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + vulkanMemoryModel::VkBool32 + vulkanMemoryModelDeviceScope::VkBool32 + vulkanMemoryModelAvailabilityVisibilityChains::VkBool32 +end + +struct VkPhysicalDeviceImagelessFramebufferFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + imagelessFramebuffer::VkBool32 +end + +struct VkFramebufferAttachmentImageInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkImageCreateFlags + usage::VkImageUsageFlags + width::UInt32 + height::UInt32 + layerCount::UInt32 + viewFormatCount::UInt32 + pViewFormats::Ptr{VkFormat} +end + +struct VkFramebufferAttachmentsCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentImageInfoCount::UInt32 + pAttachmentImageInfos::Ptr{VkFramebufferAttachmentImageInfo} +end + +struct VkRenderPassAttachmentBeginInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentCount::UInt32 + pAttachments::Ptr{VkImageView} +end + +struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + uniformBufferStandardLayout::VkBool32 +end + +struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupExtendedTypes::VkBool32 +end + +struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + separateDepthStencilLayouts::VkBool32 +end + +struct VkAttachmentReferenceStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilLayout::VkImageLayout +end + +struct VkAttachmentDescriptionStencilLayout + sType::VkStructureType + pNext::Ptr{Cvoid} + stencilInitialLayout::VkImageLayout + stencilFinalLayout::VkImageLayout +end + +struct VkPhysicalDeviceHostQueryResetFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + hostQueryReset::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + timelineSemaphore::VkBool32 +end + +struct VkPhysicalDeviceTimelineSemaphoreProperties + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTimelineSemaphoreValueDifference::UInt64 +end + +struct VkSemaphoreTypeCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphoreType::VkSemaphoreType + initialValue::UInt64 +end + +struct VkTimelineSemaphoreSubmitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValueCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValueCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreWaitInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSemaphoreWaitFlags + semaphoreCount::UInt32 + pSemaphores::Ptr{VkSemaphore} + pValues::Ptr{UInt64} +end + +struct VkSemaphoreSignalInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + value::UInt64 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeatures + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +struct VkBufferDeviceAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer +end + +struct VkBufferOpaqueCaptureAddressCreateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkMemoryOpaqueCaptureAddressAllocateInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + opaqueCaptureAddress::UInt64 +end + +struct VkDeviceMemoryOpaqueCaptureAddressInfo + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCount = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCount ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCount = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2 ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2 ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2 = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPool ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPool = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValue ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValue = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphores ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphores = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphore ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphore = Ptr{Cvoid} + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddress ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddress = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddress ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddress = Ptr{Cvoid} + +function vkCmdDrawIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCount(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCount, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCreateRenderPass2(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +function vkResetQueryPool(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPool, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +function vkGetSemaphoreCounterValue(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValue, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphores(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphores, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphore(device, pSignalInfo) + ccall((:vkSignalSemaphore, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +function vkGetBufferDeviceAddress(device, pInfo) + ccall((:vkGetBufferDeviceAddress, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddress(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddress, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +const VkSurfaceKHR_T = Cvoid + +const VkSurfaceKHR = Ptr{VkSurfaceKHR_T} + +@cenum VkPresentModeKHR::UInt32 begin + 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_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkColorSpaceKHR::UInt32 begin + 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_DISPLAY_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_DISPLAY_NATIVE_AMD = 1000213000 + VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0 + VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003 + VK_COLOR_SPACE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkSurfaceTransformFlagBitsKHR::UInt32 begin + 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 +end + +@cenum VkCompositeAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkCompositeAlphaFlagsKHR = VkFlags + +const VkSurfaceTransformFlagsKHR = VkFlags + +struct VkSurfaceCapabilitiesKHR + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags +end + +struct VkSurfaceFormatKHR + format::VkFormat + colorSpace::VkColorSpaceKHR +end + +# typedef void ( VKAPI_PTR * PFN_vkDestroySurfaceKHR ) ( VkInstance instance , VkSurfaceKHR surface , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySurfaceKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , VkSurfaceKHR surface , VkBool32 * pSupported ) +const PFN_vkGetPhysicalDeviceSurfaceSupportKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilitiesKHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormatsKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pSurfaceFormatCount , VkSurfaceFormatKHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormatsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModesKHR = Ptr{Cvoid} + +function vkDestroySurfaceKHR(instance, surface, pAllocator) + ccall((:vkDestroySurfaceKHR, libvulkan), Cvoid, (VkInstance, VkSurfaceKHR, Ptr{VkAllocationCallbacks}), instance, surface, pAllocator) +end + +function vkGetPhysicalDeviceSurfaceSupportKHR(physicalDevice, queueFamilyIndex, surface, pSupported) + ccall((:vkGetPhysicalDeviceSurfaceSupportKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, VkSurfaceKHR, Ptr{VkBool32}), physicalDevice, queueFamilyIndex, surface, pSupported) +end + +function vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilitiesKHR}), physicalDevice, surface, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormatsKHR(physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormatsKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkSurfaceFormatKHR}), physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats) +end + +function vkGetPhysicalDeviceSurfacePresentModesKHR(physicalDevice, surface, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, surface, pPresentModeCount, pPresentModes) +end + +const VkSwapchainKHR_T = Cvoid + +const VkSwapchainKHR = Ptr{VkSwapchainKHR_T} + +@cenum VkSwapchainCreateFlagBitsKHR::UInt32 begin + VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 1 + VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 2 + VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 4 + VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkSwapchainCreateFlagsKHR = VkFlags + +@cenum VkDeviceGroupPresentModeFlagBitsKHR::UInt32 begin + 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 +end + +const VkDeviceGroupPresentModeFlagsKHR = VkFlags + +struct VkSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkSwapchainCreateFlagsKHR + surface::VkSurfaceKHR + minImageCount::UInt32 + imageFormat::VkFormat + imageColorSpace::VkColorSpaceKHR + imageExtent::VkExtent2D + imageArrayLayers::UInt32 + imageUsage::VkImageUsageFlags + imageSharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} + preTransform::VkSurfaceTransformFlagBitsKHR + compositeAlpha::VkCompositeAlphaFlagBitsKHR + presentMode::VkPresentModeKHR + clipped::VkBool32 + oldSwapchain::VkSwapchainKHR +end + +struct VkPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreCount::UInt32 + pWaitSemaphores::Ptr{VkSemaphore} + swapchainCount::UInt32 + pSwapchains::Ptr{VkSwapchainKHR} + pImageIndices::Ptr{UInt32} + pResults::Ptr{VkResult} +end + +struct VkImageSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR +end + +struct VkBindImageMemorySwapchainInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + imageIndex::UInt32 +end + +struct VkAcquireNextImageInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchain::VkSwapchainKHR + timeout::UInt64 + semaphore::VkSemaphore + fence::VkFence + deviceMask::UInt32 +end + +struct VkDeviceGroupPresentCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + presentMask::NTuple{32, UInt32} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +struct VkDeviceGroupPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pDeviceMasks::Ptr{UInt32} + mode::VkDeviceGroupPresentModeFlagBitsKHR +end + +struct VkDeviceGroupSwapchainCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + modes::VkDeviceGroupPresentModeFlagsKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSwapchainKHR ) ( VkDevice device , const VkSwapchainCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchain ) +const PFN_vkCreateSwapchainKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySwapchainKHR ) ( VkDevice device , VkSwapchainKHR swapchain , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySwapchainKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainImagesKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pSwapchainImageCount , VkImage * pSwapchainImages ) +const PFN_vkGetSwapchainImagesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImageKHR ) ( VkDevice device , VkSwapchainKHR swapchain , uint64_t timeout , VkSemaphore semaphore , VkFence fence , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImageKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueuePresentKHR ) ( VkQueue queue , const VkPresentInfoKHR * pPresentInfo ) +const PFN_vkQueuePresentKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupPresentCapabilitiesKHR ) ( VkDevice device , VkDeviceGroupPresentCapabilitiesKHR * pDeviceGroupPresentCapabilities ) +const PFN_vkGetDeviceGroupPresentCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModesKHR ) ( VkDevice device , VkSurfaceKHR surface , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDevicePresentRectanglesKHR ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , uint32_t * pRectCount , VkRect2D * pRects ) +const PFN_vkGetPhysicalDevicePresentRectanglesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireNextImage2KHR ) ( VkDevice device , const VkAcquireNextImageInfoKHR * pAcquireInfo , uint32_t * pImageIndex ) +const PFN_vkAcquireNextImage2KHR = Ptr{Cvoid} + +function vkCreateSwapchainKHR(device, pCreateInfo, pAllocator, pSwapchain) + ccall((:vkCreateSwapchainKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, pCreateInfo, pAllocator, pSwapchain) +end + +function vkDestroySwapchainKHR(device, swapchain, pAllocator) + ccall((:vkDestroySwapchainKHR, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, Ptr{VkAllocationCallbacks}), device, swapchain, pAllocator) +end + +function vkGetSwapchainImagesKHR(device, swapchain, pSwapchainImageCount, pSwapchainImages) + ccall((:vkGetSwapchainImagesKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkImage}), device, swapchain, pSwapchainImageCount, pSwapchainImages) +end + +function vkAcquireNextImageKHR(device, swapchain, timeout, semaphore, fence, pImageIndex) + ccall((:vkAcquireNextImageKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, UInt64, VkSemaphore, VkFence, Ptr{UInt32}), device, swapchain, timeout, semaphore, fence, pImageIndex) +end + +function vkQueuePresentKHR(queue, pPresentInfo) + ccall((:vkQueuePresentKHR, libvulkan), VkResult, (VkQueue, Ptr{VkPresentInfoKHR}), queue, pPresentInfo) +end + +function vkGetDeviceGroupPresentCapabilitiesKHR(device, pDeviceGroupPresentCapabilities) + ccall((:vkGetDeviceGroupPresentCapabilitiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceGroupPresentCapabilitiesKHR}), device, pDeviceGroupPresentCapabilities) +end + +function vkGetDeviceGroupSurfacePresentModesKHR(device, surface, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModesKHR, libvulkan), VkResult, (VkDevice, VkSurfaceKHR, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, surface, pModes) +end + +function vkGetPhysicalDevicePresentRectanglesKHR(physicalDevice, surface, pRectCount, pRects) + ccall((:vkGetPhysicalDevicePresentRectanglesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{UInt32}, Ptr{VkRect2D}), physicalDevice, surface, pRectCount, pRects) +end + +function vkAcquireNextImage2KHR(device, pAcquireInfo, pImageIndex) + ccall((:vkAcquireNextImage2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireNextImageInfoKHR}, Ptr{UInt32}), device, pAcquireInfo, pImageIndex) +end + +const VkDisplayKHR_T = Cvoid + +const VkDisplayKHR = Ptr{VkDisplayKHR_T} + +const VkDisplayModeKHR_T = Cvoid + +const VkDisplayModeKHR = Ptr{VkDisplayModeKHR_T} + +const VkDisplayModeCreateFlagsKHR = VkFlags + +@cenum VkDisplayPlaneAlphaFlagBitsKHR::UInt32 begin + 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 +end + +const VkDisplayPlaneAlphaFlagsKHR = VkFlags + +const VkDisplaySurfaceCreateFlagsKHR = VkFlags + +struct VkDisplayModeParametersKHR + visibleRegion::VkExtent2D + refreshRate::UInt32 +end + +struct VkDisplayModeCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplayModeCreateFlagsKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayModePropertiesKHR + displayMode::VkDisplayModeKHR + parameters::VkDisplayModeParametersKHR +end + +struct VkDisplayPlaneCapabilitiesKHR + supportedAlpha::VkDisplayPlaneAlphaFlagsKHR + minSrcPosition::VkOffset2D + maxSrcPosition::VkOffset2D + minSrcExtent::VkExtent2D + maxSrcExtent::VkExtent2D + minDstPosition::VkOffset2D + maxDstPosition::VkOffset2D + minDstExtent::VkExtent2D + maxDstExtent::VkExtent2D +end + +struct VkDisplayPlanePropertiesKHR + currentDisplay::VkDisplayKHR + currentStackIndex::UInt32 +end + +struct VkDisplayPropertiesKHR + display::VkDisplayKHR + displayName::Ptr{Cchar} + physicalDimensions::VkExtent2D + physicalResolution::VkExtent2D + supportedTransforms::VkSurfaceTransformFlagsKHR + planeReorderPossible::VkBool32 + persistentContent::VkBool32 +end + +struct VkDisplaySurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDisplaySurfaceCreateFlagsKHR + displayMode::VkDisplayModeKHR + planeIndex::UInt32 + planeStackIndex::UInt32 + transform::VkSurfaceTransformFlagBitsKHR + globalAlpha::Cfloat + alphaMode::VkDisplayPlaneAlphaFlagBitsKHR + imageExtent::VkExtent2D +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlanePropertiesKHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneSupportedDisplaysKHR ) ( VkPhysicalDevice physicalDevice , uint32_t planeIndex , uint32_t * pDisplayCount , VkDisplayKHR * pDisplays ) +const PFN_vkGetDisplayPlaneSupportedDisplaysKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModePropertiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModePropertiesKHR * pProperties ) +const PFN_vkGetDisplayModePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayModeKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , const VkDisplayModeCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDisplayModeKHR * pMode ) +const PFN_vkCreateDisplayModeKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilitiesKHR ) ( VkPhysicalDevice physicalDevice , VkDisplayModeKHR mode , uint32_t planeIndex , VkDisplayPlaneCapabilitiesKHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilitiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDisplayPlaneSurfaceKHR ) ( VkInstance instance , const VkDisplaySurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateDisplayPlaneSurfaceKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayPropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlanePropertiesKHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlanePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlanePropertiesKHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneSupportedDisplaysKHR(physicalDevice, planeIndex, pDisplayCount, pDisplays) + ccall((:vkGetDisplayPlaneSupportedDisplaysKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkDisplayKHR}), physicalDevice, planeIndex, pDisplayCount, pDisplays) +end + +function vkGetDisplayModePropertiesKHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModePropertiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModePropertiesKHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkCreateDisplayModeKHR(physicalDevice, display, pCreateInfo, pAllocator, pMode) + ccall((:vkCreateDisplayModeKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{VkDisplayModeCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkDisplayModeKHR}), physicalDevice, display, pCreateInfo, pAllocator, pMode) +end + +function vkGetDisplayPlaneCapabilitiesKHR(physicalDevice, mode, planeIndex, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilitiesKHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayModeKHR, UInt32, Ptr{VkDisplayPlaneCapabilitiesKHR}), physicalDevice, mode, planeIndex, pCapabilities) +end + +function vkCreateDisplayPlaneSurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateDisplayPlaneSurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkDisplaySurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +struct VkDisplayPresentInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + srcRect::VkRect2D + dstRect::VkRect2D + persistent::VkBool32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSharedSwapchainsKHR ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainCreateInfoKHR * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkSwapchainKHR * pSwapchains ) +const PFN_vkCreateSharedSwapchainsKHR = Ptr{Cvoid} + +function vkCreateSharedSwapchainsKHR(device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) + ccall((:vkCreateSharedSwapchainsKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkSwapchainCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSwapchainKHR}), device, swapchainCount, pCreateInfos, pAllocator, pSwapchains) +end + +const VkRenderPassMultiviewCreateInfoKHR = VkRenderPassMultiviewCreateInfo + +const VkPhysicalDeviceMultiviewFeaturesKHR = VkPhysicalDeviceMultiviewFeatures + +const VkPhysicalDeviceMultiviewPropertiesKHR = VkPhysicalDeviceMultiviewProperties + +const VkPhysicalDeviceFeatures2KHR = VkPhysicalDeviceFeatures2 + +const VkPhysicalDeviceProperties2KHR = VkPhysicalDeviceProperties2 + +const VkFormatProperties2KHR = VkFormatProperties2 + +const VkImageFormatProperties2KHR = VkImageFormatProperties2 + +const VkPhysicalDeviceImageFormatInfo2KHR = VkPhysicalDeviceImageFormatInfo2 + +const VkQueueFamilyProperties2KHR = VkQueueFamilyProperties2 + +const VkPhysicalDeviceMemoryProperties2KHR = VkPhysicalDeviceMemoryProperties2 + +const VkSparseImageFormatProperties2KHR = VkSparseImageFormatProperties2 + +const VkPhysicalDeviceSparseImageFormatInfo2KHR = VkPhysicalDeviceSparseImageFormatInfo2 + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFeatures2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceFeatures2 * pFeatures ) +const PFN_vkGetPhysicalDeviceFeatures2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkFormatProperties2 * pFormatProperties ) +const PFN_vkGetPhysicalDeviceFormatProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceImageFormatInfo2 * pImageFormatInfo , VkImageFormatProperties2 * pImageFormatProperties ) +const PFN_vkGetPhysicalDeviceImageFormatProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pQueueFamilyPropertyCount , VkQueueFamilyProperties2 * pQueueFamilyProperties ) +const PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMemoryProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkPhysicalDeviceMemoryProperties2 * pMemoryProperties ) +const PFN_vkGetPhysicalDeviceMemoryProperties2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSparseImageFormatInfo2 * pFormatInfo , uint32_t * pPropertyCount , VkSparseImageFormatProperties2 * pProperties ) +const PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceFeatures2KHR(physicalDevice, pFeatures) + ccall((:vkGetPhysicalDeviceFeatures2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceFeatures2}), physicalDevice, pFeatures) +end + +function vkGetPhysicalDeviceProperties2KHR(physicalDevice, pProperties) + ccall((:vkGetPhysicalDeviceProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceProperties2}), physicalDevice, pProperties) +end + +function vkGetPhysicalDeviceFormatProperties2KHR(physicalDevice, format, pFormatProperties) + ccall((:vkGetPhysicalDeviceFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, VkFormat, Ptr{VkFormatProperties2}), physicalDevice, format, pFormatProperties) +end + +function vkGetPhysicalDeviceImageFormatProperties2KHR(physicalDevice, pImageFormatInfo, pImageFormatProperties) + ccall((:vkGetPhysicalDeviceImageFormatProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceImageFormatInfo2}, Ptr{VkImageFormatProperties2}), physicalDevice, pImageFormatInfo, pImageFormatProperties) +end + +function vkGetPhysicalDeviceQueueFamilyProperties2KHR(physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) + ccall((:vkGetPhysicalDeviceQueueFamilyProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkQueueFamilyProperties2}), physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties) +end + +function vkGetPhysicalDeviceMemoryProperties2KHR(physicalDevice, pMemoryProperties) + ccall((:vkGetPhysicalDeviceMemoryProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceMemoryProperties2}), physicalDevice, pMemoryProperties) +end + +function vkGetPhysicalDeviceSparseImageFormatProperties2KHR(physicalDevice, pFormatInfo, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceSparseImageFormatProperties2KHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSparseImageFormatInfo2}, Ptr{UInt32}, Ptr{VkSparseImageFormatProperties2}), physicalDevice, pFormatInfo, pPropertyCount, pProperties) +end + +const VkPeerMemoryFeatureFlagsKHR = VkPeerMemoryFeatureFlags + +const VkPeerMemoryFeatureFlagBitsKHR = VkPeerMemoryFeatureFlagBits + +const VkMemoryAllocateFlagsKHR = VkMemoryAllocateFlags + +const VkMemoryAllocateFlagBitsKHR = VkMemoryAllocateFlagBits + +const VkMemoryAllocateFlagsInfoKHR = VkMemoryAllocateFlagsInfo + +const VkDeviceGroupRenderPassBeginInfoKHR = VkDeviceGroupRenderPassBeginInfo + +const VkDeviceGroupCommandBufferBeginInfoKHR = VkDeviceGroupCommandBufferBeginInfo + +const VkDeviceGroupSubmitInfoKHR = VkDeviceGroupSubmitInfo + +const VkDeviceGroupBindSparseInfoKHR = VkDeviceGroupBindSparseInfo + +const VkBindBufferMemoryDeviceGroupInfoKHR = VkBindBufferMemoryDeviceGroupInfo + +const VkBindImageMemoryDeviceGroupInfoKHR = VkBindImageMemoryDeviceGroupInfo + +# typedef void ( VKAPI_PTR * PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR ) ( VkDevice device , uint32_t heapIndex , uint32_t localDeviceIndex , uint32_t remoteDeviceIndex , VkPeerMemoryFeatureFlags * pPeerMemoryFeatures ) +const PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDeviceMaskKHR ) ( VkCommandBuffer commandBuffer , uint32_t deviceMask ) +const PFN_vkCmdSetDeviceMaskKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDispatchBaseKHR ) ( VkCommandBuffer commandBuffer , uint32_t baseGroupX , uint32_t baseGroupY , uint32_t baseGroupZ , uint32_t groupCountX , uint32_t groupCountY , uint32_t groupCountZ ) +const PFN_vkCmdDispatchBaseKHR = Ptr{Cvoid} + +function vkGetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) + ccall((:vkGetDeviceGroupPeerMemoryFeaturesKHR, libvulkan), Cvoid, (VkDevice, UInt32, UInt32, UInt32, Ptr{VkPeerMemoryFeatureFlags}), device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures) +end + +function vkCmdSetDeviceMaskKHR(commandBuffer, deviceMask) + ccall((:vkCmdSetDeviceMaskKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32), commandBuffer, deviceMask) +end + +function vkCmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) + ccall((:vkCmdDispatchBaseKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, UInt32, UInt32, UInt32, UInt32), commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ) +end + +const VkCommandPoolTrimFlagsKHR = VkCommandPoolTrimFlags + +# typedef void ( VKAPI_PTR * PFN_vkTrimCommandPoolKHR ) ( VkDevice device , VkCommandPool commandPool , VkCommandPoolTrimFlags flags ) +const PFN_vkTrimCommandPoolKHR = Ptr{Cvoid} + +function vkTrimCommandPoolKHR(device, commandPool, flags) + ccall((:vkTrimCommandPoolKHR, libvulkan), Cvoid, (VkDevice, VkCommandPool, VkCommandPoolTrimFlags), device, commandPool, flags) +end + +const VkPhysicalDeviceGroupPropertiesKHR = VkPhysicalDeviceGroupProperties + +const VkDeviceGroupDeviceCreateInfoKHR = VkDeviceGroupDeviceCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceGroupsKHR ) ( VkInstance instance , uint32_t * pPhysicalDeviceGroupCount , VkPhysicalDeviceGroupProperties * pPhysicalDeviceGroupProperties ) +const PFN_vkEnumeratePhysicalDeviceGroupsKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceGroupsKHR(instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) + ccall((:vkEnumeratePhysicalDeviceGroupsKHR, libvulkan), VkResult, (VkInstance, Ptr{UInt32}, Ptr{VkPhysicalDeviceGroupProperties}), instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties) +end + +const VkExternalMemoryHandleTypeFlagsKHR = VkExternalMemoryHandleTypeFlags + +const VkExternalMemoryHandleTypeFlagBitsKHR = VkExternalMemoryHandleTypeFlagBits + +const VkExternalMemoryFeatureFlagsKHR = VkExternalMemoryFeatureFlags + +const VkExternalMemoryFeatureFlagBitsKHR = VkExternalMemoryFeatureFlagBits + +const VkExternalMemoryPropertiesKHR = VkExternalMemoryProperties + +const VkPhysicalDeviceExternalImageFormatInfoKHR = VkPhysicalDeviceExternalImageFormatInfo + +const VkExternalImageFormatPropertiesKHR = VkExternalImageFormatProperties + +const VkPhysicalDeviceExternalBufferInfoKHR = VkPhysicalDeviceExternalBufferInfo + +const VkExternalBufferPropertiesKHR = VkExternalBufferProperties + +const VkPhysicalDeviceIDPropertiesKHR = VkPhysicalDeviceIDProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalBufferInfo * pExternalBufferInfo , VkExternalBufferProperties * pExternalBufferProperties ) +const PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalBufferPropertiesKHR(physicalDevice, pExternalBufferInfo, pExternalBufferProperties) + ccall((:vkGetPhysicalDeviceExternalBufferPropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalBufferInfo}, Ptr{VkExternalBufferProperties}), physicalDevice, pExternalBufferInfo, pExternalBufferProperties) +end + +const VkExternalMemoryImageCreateInfoKHR = VkExternalMemoryImageCreateInfo + +const VkExternalMemoryBufferCreateInfoKHR = VkExternalMemoryBufferCreateInfo + +const VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo + +struct VkImportMemoryFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + fd::Cint +end + +struct VkMemoryFdPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdKHR ) ( VkDevice device , const VkMemoryGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetMemoryFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryFdPropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , int fd , VkMemoryFdPropertiesKHR * pMemoryFdProperties ) +const PFN_vkGetMemoryFdPropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetMemoryFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +function vkGetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties) + ccall((:vkGetMemoryFdPropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Cint, Ptr{VkMemoryFdPropertiesKHR}), device, handleType, fd, pMemoryFdProperties) +end + +const VkExternalSemaphoreHandleTypeFlagsKHR = VkExternalSemaphoreHandleTypeFlags + +const VkExternalSemaphoreHandleTypeFlagBitsKHR = VkExternalSemaphoreHandleTypeFlagBits + +const VkExternalSemaphoreFeatureFlagsKHR = VkExternalSemaphoreFeatureFlags + +const VkExternalSemaphoreFeatureFlagBitsKHR = VkExternalSemaphoreFeatureFlagBits + +const VkPhysicalDeviceExternalSemaphoreInfoKHR = VkPhysicalDeviceExternalSemaphoreInfo + +const VkExternalSemaphorePropertiesKHR = VkExternalSemaphoreProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalSemaphoreInfo * pExternalSemaphoreInfo , VkExternalSemaphoreProperties * pExternalSemaphoreProperties ) +const PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) + ccall((:vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalSemaphoreInfo}, Ptr{VkExternalSemaphoreProperties}), physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties) +end + +const VkSemaphoreImportFlagsKHR = VkSemaphoreImportFlags + +const VkSemaphoreImportFlagBitsKHR = VkSemaphoreImportFlagBits + +const VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo + +struct VkImportSemaphoreFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + fd::Cint +end + +struct VkSemaphoreGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreFdKHR ) ( VkDevice device , const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo ) +const PFN_vkImportSemaphoreFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreFdKHR ) ( VkDevice device , const VkSemaphoreGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetSemaphoreFdKHR = Ptr{Cvoid} + +function vkImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo) + ccall((:vkImportSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreFdInfoKHR}), device, pImportSemaphoreFdInfo) +end + +function vkGetSemaphoreFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetSemaphoreFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +struct VkPhysicalDevicePushDescriptorPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + maxPushDescriptors::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetKHR ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipelineLayout layout , uint32_t set , uint32_t descriptorWriteCount , const VkWriteDescriptorSet * pDescriptorWrites ) +const PFN_vkCmdPushDescriptorSetKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPushDescriptorSetWithTemplateKHR ) ( VkCommandBuffer commandBuffer , VkDescriptorUpdateTemplate descriptorUpdateTemplate , VkPipelineLayout layout , uint32_t set , const void * pData ) +const PFN_vkCmdPushDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) + ccall((:vkCmdPushDescriptorSetKHR, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipelineLayout, UInt32, UInt32, Ptr{VkWriteDescriptorSet}), commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites) +end + +function vkCmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData) + ccall((:vkCmdPushDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkCommandBuffer, VkDescriptorUpdateTemplate, VkPipelineLayout, UInt32, Ptr{Cvoid}), commandBuffer, descriptorUpdateTemplate, layout, set, pData) +end + +const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDeviceFloat16Int8FeaturesKHR = VkPhysicalDeviceShaderFloat16Int8Features + +const VkPhysicalDevice16BitStorageFeaturesKHR = VkPhysicalDevice16BitStorageFeatures + +struct VkRectLayerKHR + offset::VkOffset2D + extent::VkExtent2D + layer::UInt32 +end + +struct VkPresentRegionKHR + rectangleCount::UInt32 + pRectangles::Ptr{VkRectLayerKHR} +end + +struct VkPresentRegionsKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pRegions::Ptr{VkPresentRegionKHR} +end + +const VkDescriptorUpdateTemplateKHR = VkDescriptorUpdateTemplate + +const VkDescriptorUpdateTemplateTypeKHR = VkDescriptorUpdateTemplateType + +const VkDescriptorUpdateTemplateCreateFlagsKHR = VkDescriptorUpdateTemplateCreateFlags + +const VkDescriptorUpdateTemplateEntryKHR = VkDescriptorUpdateTemplateEntry + +const VkDescriptorUpdateTemplateCreateInfoKHR = VkDescriptorUpdateTemplateCreateInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDescriptorUpdateTemplateKHR ) ( VkDevice device , const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate ) +const PFN_vkCreateDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDescriptorUpdateTemplateKHR ) ( VkDevice device , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDescriptorUpdateTemplateKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUpdateDescriptorSetWithTemplateKHR ) ( VkDevice device , VkDescriptorSet descriptorSet , VkDescriptorUpdateTemplate descriptorUpdateTemplate , const void * pData ) +const PFN_vkUpdateDescriptorSetWithTemplateKHR = Ptr{Cvoid} + +function vkCreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) + ccall((:vkCreateDescriptorUpdateTemplateKHR, libvulkan), VkResult, (VkDevice, Ptr{VkDescriptorUpdateTemplateCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkDescriptorUpdateTemplate}), device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) +end + +function vkDestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator) + ccall((:vkDestroyDescriptorUpdateTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorUpdateTemplate, Ptr{VkAllocationCallbacks}), device, descriptorUpdateTemplate, pAllocator) +end + +function vkUpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData) + ccall((:vkUpdateDescriptorSetWithTemplateKHR, libvulkan), Cvoid, (VkDevice, VkDescriptorSet, VkDescriptorUpdateTemplate, Ptr{Cvoid}), device, descriptorSet, descriptorUpdateTemplate, pData) +end + +const VkPhysicalDeviceImagelessFramebufferFeaturesKHR = VkPhysicalDeviceImagelessFramebufferFeatures + +const VkFramebufferAttachmentsCreateInfoKHR = VkFramebufferAttachmentsCreateInfo + +const VkFramebufferAttachmentImageInfoKHR = VkFramebufferAttachmentImageInfo + +const VkRenderPassAttachmentBeginInfoKHR = VkRenderPassAttachmentBeginInfo + +const VkRenderPassCreateInfo2KHR = VkRenderPassCreateInfo2 + +const VkAttachmentDescription2KHR = VkAttachmentDescription2 + +const VkAttachmentReference2KHR = VkAttachmentReference2 + +const VkSubpassDescription2KHR = VkSubpassDescription2 + +const VkSubpassDependency2KHR = VkSubpassDependency2 + +const VkSubpassBeginInfoKHR = VkSubpassBeginInfo + +const VkSubpassEndInfoKHR = VkSubpassEndInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRenderPass2KHR ) ( VkDevice device , const VkRenderPassCreateInfo2 * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkRenderPass * pRenderPass ) +const PFN_vkCreateRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkRenderPassBeginInfo * pRenderPassBegin , const VkSubpassBeginInfo * pSubpassBeginInfo ) +const PFN_vkCmdBeginRenderPass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdNextSubpass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassBeginInfo * pSubpassBeginInfo , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdNextSubpass2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndRenderPass2KHR ) ( VkCommandBuffer commandBuffer , const VkSubpassEndInfo * pSubpassEndInfo ) +const PFN_vkCmdEndRenderPass2KHR = Ptr{Cvoid} + +function vkCreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass) + ccall((:vkCreateRenderPass2KHR, libvulkan), VkResult, (VkDevice, Ptr{VkRenderPassCreateInfo2}, Ptr{VkAllocationCallbacks}, Ptr{VkRenderPass}), device, pCreateInfo, pAllocator, pRenderPass) +end + +function vkCmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo) + ccall((:vkCmdBeginRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkRenderPassBeginInfo}, Ptr{VkSubpassBeginInfo}), commandBuffer, pRenderPassBegin, pSubpassBeginInfo) +end + +function vkCmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) + ccall((:vkCmdNextSubpass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassBeginInfo}, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassBeginInfo, pSubpassEndInfo) +end + +function vkCmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo) + ccall((:vkCmdEndRenderPass2KHR, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSubpassEndInfo}), commandBuffer, pSubpassEndInfo) +end + +struct VkSharedPresentSurfaceCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + sharedPresentSupportedUsageFlags::VkImageUsageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainStatusKHR ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkGetSwapchainStatusKHR = Ptr{Cvoid} + +function vkGetSwapchainStatusKHR(device, swapchain) + ccall((:vkGetSwapchainStatusKHR, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +const VkExternalFenceHandleTypeFlagsKHR = VkExternalFenceHandleTypeFlags + +const VkExternalFenceHandleTypeFlagBitsKHR = VkExternalFenceHandleTypeFlagBits + +const VkExternalFenceFeatureFlagsKHR = VkExternalFenceFeatureFlags + +const VkExternalFenceFeatureFlagBitsKHR = VkExternalFenceFeatureFlagBits + +const VkPhysicalDeviceExternalFenceInfoKHR = VkPhysicalDeviceExternalFenceInfo + +const VkExternalFencePropertiesKHR = VkExternalFenceProperties + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceExternalFenceInfo * pExternalFenceInfo , VkExternalFenceProperties * pExternalFenceProperties ) +const PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalFencePropertiesKHR(physicalDevice, pExternalFenceInfo, pExternalFenceProperties) + ccall((:vkGetPhysicalDeviceExternalFencePropertiesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkPhysicalDeviceExternalFenceInfo}, Ptr{VkExternalFenceProperties}), physicalDevice, pExternalFenceInfo, pExternalFenceProperties) +end + +const VkFenceImportFlagsKHR = VkFenceImportFlags + +const VkFenceImportFlagBitsKHR = VkFenceImportFlagBits + +const VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo + +struct VkImportFenceFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + fd::Cint +end + +struct VkFenceGetFdInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceFdKHR ) ( VkDevice device , const VkImportFenceFdInfoKHR * pImportFenceFdInfo ) +const PFN_vkImportFenceFdKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceFdKHR ) ( VkDevice device , const VkFenceGetFdInfoKHR * pGetFdInfo , int * pFd ) +const PFN_vkGetFenceFdKHR = Ptr{Cvoid} + +function vkImportFenceFdKHR(device, pImportFenceFdInfo) + ccall((:vkImportFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceFdInfoKHR}), device, pImportFenceFdInfo) +end + +function vkGetFenceFdKHR(device, pGetFdInfo, pFd) + ccall((:vkGetFenceFdKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetFdInfoKHR}, Ptr{Cint}), device, pGetFdInfo, pFd) +end + +@cenum VkPerformanceCounterUnitKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0 + VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1 + VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3 + VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4 + VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5 + VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6 + VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7 + VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8 + VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9 + VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10 + VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterScopeKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1 + VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2 + VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = 0 + VK_QUERY_SCOPE_RENDER_PASS_KHR = 1 + VK_QUERY_SCOPE_COMMAND_KHR = 2 + VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterStorageKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0 + VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1 + VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2 + VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4 + VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5 + VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 2147483647 +end + +@cenum VkPerformanceCounterDescriptionFlagBitsKHR::UInt32 begin + VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = 1 + VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = 2 + VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkPerformanceCounterDescriptionFlagsKHR = VkFlags + +@cenum VkAcquireProfilingLockFlagBitsKHR::UInt32 begin + VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkAcquireProfilingLockFlagsKHR = VkFlags + +struct VkPhysicalDevicePerformanceQueryFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCounterQueryPools::VkBool32 + performanceCounterMultipleQueryPools::VkBool32 +end + +struct VkPhysicalDevicePerformanceQueryPropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + allowCommandBufferQueryCopies::VkBool32 +end + +struct VkPerformanceCounterKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + unit::VkPerformanceCounterUnitKHR + scope::VkPerformanceCounterScopeKHR + storage::VkPerformanceCounterStorageKHR + uuid::NTuple{16, UInt8} +end + +struct VkPerformanceCounterDescriptionKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPerformanceCounterDescriptionFlagsKHR + name::NTuple{256, Cchar} + category::NTuple{256, Cchar} + description::NTuple{256, Cchar} +end + +struct VkQueryPoolPerformanceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + queueFamilyIndex::UInt32 + counterIndexCount::UInt32 + pCounterIndices::Ptr{UInt32} +end + +struct VkPerformanceCounterResultKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol) + f === :int32 && return Ptr{Int32}(x + 0) + f === :int64 && return Ptr{Int64}(x + 0) + f === :uint32 && return Ptr{UInt32}(x + 0) + f === :uint64 && return Ptr{UInt64}(x + 0) + f === :float32 && return Ptr{Cfloat}(x + 0) + f === :float64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceCounterResultKHR, f::Symbol) + r = Ref{VkPerformanceCounterResultKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceCounterResultKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceCounterResultKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkAcquireProfilingLockInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkAcquireProfilingLockFlagsKHR + timeout::UInt64 +end + +struct VkPerformanceQuerySubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + counterPassIndex::UInt32 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex , uint32_t * pCounterCount , VkPerformanceCounterKHR * pCounters , VkPerformanceCounterDescriptionKHR * pCounterDescriptions ) +const PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR ) ( VkPhysicalDevice physicalDevice , const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo , uint32_t * pNumPasses ) +const PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireProfilingLockKHR ) ( VkDevice device , const VkAcquireProfilingLockInfoKHR * pInfo ) +const PFN_vkAcquireProfilingLockKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkReleaseProfilingLockKHR ) ( VkDevice device ) +const PFN_vkReleaseProfilingLockKHR = Ptr{Cvoid} + +function vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) + ccall((:vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, libvulkan), VkResult, (VkPhysicalDevice, UInt32, Ptr{UInt32}, Ptr{VkPerformanceCounterKHR}, Ptr{VkPerformanceCounterDescriptionKHR}), physicalDevice, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions) +end + +function vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) + ccall((:vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, libvulkan), Cvoid, (VkPhysicalDevice, Ptr{VkQueryPoolPerformanceCreateInfoKHR}, Ptr{UInt32}), physicalDevice, pPerformanceQueryCreateInfo, pNumPasses) +end + +function vkAcquireProfilingLockKHR(device, pInfo) + ccall((:vkAcquireProfilingLockKHR, libvulkan), VkResult, (VkDevice, Ptr{VkAcquireProfilingLockInfoKHR}), device, pInfo) +end + +function vkReleaseProfilingLockKHR(device) + ccall((:vkReleaseProfilingLockKHR, libvulkan), Cvoid, (VkDevice,), device) +end + +const VkPointClippingBehaviorKHR = VkPointClippingBehavior + +const VkTessellationDomainOriginKHR = VkTessellationDomainOrigin + +const VkPhysicalDevicePointClippingPropertiesKHR = VkPhysicalDevicePointClippingProperties + +const VkRenderPassInputAttachmentAspectCreateInfoKHR = VkRenderPassInputAttachmentAspectCreateInfo + +const VkInputAttachmentAspectReferenceKHR = VkInputAttachmentAspectReference + +const VkImageViewUsageCreateInfoKHR = VkImageViewUsageCreateInfo + +const VkPipelineTessellationDomainOriginStateCreateInfoKHR = VkPipelineTessellationDomainOriginStateCreateInfo + +struct VkPhysicalDeviceSurfaceInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surface::VkSurfaceKHR +end + +struct VkSurfaceCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCapabilities::VkSurfaceCapabilitiesKHR +end + +struct VkSurfaceFormat2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceFormat::VkSurfaceFormatKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkSurfaceCapabilities2KHR * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceFormats2KHR ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pSurfaceFormatCount , VkSurfaceFormat2KHR * pSurfaceFormats ) +const PFN_vkGetPhysicalDeviceSurfaceFormats2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2KHR(physicalDevice, pSurfaceInfo, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkSurfaceCapabilities2KHR}), physicalDevice, pSurfaceInfo, pSurfaceCapabilities) +end + +function vkGetPhysicalDeviceSurfaceFormats2KHR(physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) + ccall((:vkGetPhysicalDeviceSurfaceFormats2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkSurfaceFormat2KHR}), physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats) +end + +const VkPhysicalDeviceVariablePointerFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +const VkPhysicalDeviceVariablePointersFeaturesKHR = VkPhysicalDeviceVariablePointersFeatures + +struct VkDisplayProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayProperties::VkDisplayPropertiesKHR +end + +struct VkDisplayPlaneProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPlaneProperties::VkDisplayPlanePropertiesKHR +end + +struct VkDisplayModeProperties2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + displayModeProperties::VkDisplayModePropertiesKHR +end + +struct VkDisplayPlaneInfo2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + mode::VkDisplayModeKHR + planeIndex::UInt32 +end + +struct VkDisplayPlaneCapabilities2KHR + sType::VkStructureType + pNext::Ptr{Cvoid} + capabilities::VkDisplayPlaneCapabilitiesKHR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkDisplayPlaneProperties2KHR * pProperties ) +const PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayModeProperties2KHR ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display , uint32_t * pPropertyCount , VkDisplayModeProperties2KHR * pProperties ) +const PFN_vkGetDisplayModeProperties2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDisplayPlaneCapabilities2KHR ) ( VkPhysicalDevice physicalDevice , const VkDisplayPlaneInfo2KHR * pDisplayPlaneInfo , VkDisplayPlaneCapabilities2KHR * pCapabilities ) +const PFN_vkGetDisplayPlaneCapabilities2KHR = Ptr{Cvoid} + +function vkGetPhysicalDeviceDisplayProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetPhysicalDeviceDisplayPlaneProperties2KHR(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceDisplayPlaneProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkDisplayPlaneProperties2KHR}), physicalDevice, pPropertyCount, pProperties) +end + +function vkGetDisplayModeProperties2KHR(physicalDevice, display, pPropertyCount, pProperties) + ccall((:vkGetDisplayModeProperties2KHR, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR, Ptr{UInt32}, Ptr{VkDisplayModeProperties2KHR}), physicalDevice, display, pPropertyCount, pProperties) +end + +function vkGetDisplayPlaneCapabilities2KHR(physicalDevice, pDisplayPlaneInfo, pCapabilities) + ccall((:vkGetDisplayPlaneCapabilities2KHR, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkDisplayPlaneInfo2KHR}, Ptr{VkDisplayPlaneCapabilities2KHR}), physicalDevice, pDisplayPlaneInfo, pCapabilities) +end + +const VkMemoryDedicatedRequirementsKHR = VkMemoryDedicatedRequirements + +const VkMemoryDedicatedAllocateInfoKHR = VkMemoryDedicatedAllocateInfo + +const VkBufferMemoryRequirementsInfo2KHR = VkBufferMemoryRequirementsInfo2 + +const VkImageMemoryRequirementsInfo2KHR = VkImageMemoryRequirementsInfo2 + +const VkImageSparseMemoryRequirementsInfo2KHR = VkImageSparseMemoryRequirementsInfo2 + +const VkMemoryRequirements2KHR = VkMemoryRequirements2 + +const VkSparseImageMemoryRequirements2KHR = VkSparseImageMemoryRequirements2 + +# typedef void ( VKAPI_PTR * PFN_vkGetImageMemoryRequirements2KHR ) ( VkDevice device , const VkImageMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetImageMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetBufferMemoryRequirements2KHR ) ( VkDevice device , const VkBufferMemoryRequirementsInfo2 * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetBufferMemoryRequirements2KHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetImageSparseMemoryRequirements2KHR ) ( VkDevice device , const VkImageSparseMemoryRequirementsInfo2 * pInfo , uint32_t * pSparseMemoryRequirementCount , VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements ) +const PFN_vkGetImageSparseMemoryRequirements2KHR = Ptr{Cvoid} + +function vkGetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetImageMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements) + ccall((:vkGetBufferMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkBufferMemoryRequirementsInfo2}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkGetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) + ccall((:vkGetImageSparseMemoryRequirements2KHR, libvulkan), Cvoid, (VkDevice, Ptr{VkImageSparseMemoryRequirementsInfo2}, Ptr{UInt32}, Ptr{VkSparseImageMemoryRequirements2}), device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements) +end + +const VkImageFormatListCreateInfoKHR = VkImageFormatListCreateInfo + +const VkSamplerYcbcrConversionKHR = VkSamplerYcbcrConversion + +const VkSamplerYcbcrModelConversionKHR = VkSamplerYcbcrModelConversion + +const VkSamplerYcbcrRangeKHR = VkSamplerYcbcrRange + +const VkChromaLocationKHR = VkChromaLocation + +const VkSamplerYcbcrConversionCreateInfoKHR = VkSamplerYcbcrConversionCreateInfo + +const VkSamplerYcbcrConversionInfoKHR = VkSamplerYcbcrConversionInfo + +const VkBindImagePlaneMemoryInfoKHR = VkBindImagePlaneMemoryInfo + +const VkImagePlaneMemoryRequirementsInfoKHR = VkImagePlaneMemoryRequirementsInfo + +const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VkPhysicalDeviceSamplerYcbcrConversionFeatures + +const VkSamplerYcbcrConversionImageFormatPropertiesKHR = VkSamplerYcbcrConversionImageFormatProperties + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateSamplerYcbcrConversionKHR ) ( VkDevice device , const VkSamplerYcbcrConversionCreateInfo * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSamplerYcbcrConversion * pYcbcrConversion ) +const PFN_vkCreateSamplerYcbcrConversionKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroySamplerYcbcrConversionKHR ) ( VkDevice device , VkSamplerYcbcrConversion ycbcrConversion , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroySamplerYcbcrConversionKHR = Ptr{Cvoid} + +function vkCreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion) + ccall((:vkCreateSamplerYcbcrConversionKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSamplerYcbcrConversionCreateInfo}, Ptr{VkAllocationCallbacks}, Ptr{VkSamplerYcbcrConversion}), device, pCreateInfo, pAllocator, pYcbcrConversion) +end + +function vkDestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator) + ccall((:vkDestroySamplerYcbcrConversionKHR, libvulkan), Cvoid, (VkDevice, VkSamplerYcbcrConversion, Ptr{VkAllocationCallbacks}), device, ycbcrConversion, pAllocator) +end + +const VkBindBufferMemoryInfoKHR = VkBindBufferMemoryInfo + +const VkBindImageMemoryInfoKHR = VkBindImageMemoryInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindBufferMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindBufferMemoryInfo * pBindInfos ) +const PFN_vkBindBufferMemory2KHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindImageMemory2KHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindImageMemoryInfo * pBindInfos ) +const PFN_vkBindImageMemory2KHR = Ptr{Cvoid} + +function vkBindBufferMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindBufferMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindBufferMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +function vkBindImageMemory2KHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindImageMemory2KHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindImageMemoryInfo}), device, bindInfoCount, pBindInfos) +end + +const VkPhysicalDeviceMaintenance3PropertiesKHR = VkPhysicalDeviceMaintenance3Properties + +const VkDescriptorSetLayoutSupportKHR = VkDescriptorSetLayoutSupport + +# typedef void ( VKAPI_PTR * PFN_vkGetDescriptorSetLayoutSupportKHR ) ( VkDevice device , const VkDescriptorSetLayoutCreateInfo * pCreateInfo , VkDescriptorSetLayoutSupport * pSupport ) +const PFN_vkGetDescriptorSetLayoutSupportKHR = Ptr{Cvoid} + +function vkGetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport) + ccall((:vkGetDescriptorSetLayoutSupportKHR, libvulkan), Cvoid, (VkDevice, Ptr{VkDescriptorSetLayoutCreateInfo}, Ptr{VkDescriptorSetLayoutSupport}), device, pCreateInfo, pSupport) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountKHR ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountKHR = Ptr{Cvoid} + +function vkCmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountKHR, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures + +const VkPhysicalDevice8BitStorageFeaturesKHR = VkPhysicalDevice8BitStorageFeatures + +const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = VkPhysicalDeviceShaderAtomicInt64Features + +struct VkPhysicalDeviceShaderClockFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSubgroupClock::VkBool32 + shaderDeviceClock::VkBool32 +end + +const VkDriverIdKHR = VkDriverId + +const VkConformanceVersionKHR = VkConformanceVersion + +const VkPhysicalDeviceDriverPropertiesKHR = VkPhysicalDeviceDriverProperties + +const VkShaderFloatControlsIndependenceKHR = VkShaderFloatControlsIndependence + +const VkPhysicalDeviceFloatControlsPropertiesKHR = VkPhysicalDeviceFloatControlsProperties + +const VkResolveModeFlagBitsKHR = VkResolveModeFlagBits + +const VkResolveModeFlagsKHR = VkResolveModeFlags + +const VkSubpassDescriptionDepthStencilResolveKHR = VkSubpassDescriptionDepthStencilResolve + +const VkPhysicalDeviceDepthStencilResolvePropertiesKHR = VkPhysicalDeviceDepthStencilResolveProperties + +const VkSemaphoreTypeKHR = VkSemaphoreType + +const VkSemaphoreWaitFlagBitsKHR = VkSemaphoreWaitFlagBits + +const VkSemaphoreWaitFlagsKHR = VkSemaphoreWaitFlags + +const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = VkPhysicalDeviceTimelineSemaphoreFeatures + +const VkPhysicalDeviceTimelineSemaphorePropertiesKHR = VkPhysicalDeviceTimelineSemaphoreProperties + +const VkSemaphoreTypeCreateInfoKHR = VkSemaphoreTypeCreateInfo + +const VkTimelineSemaphoreSubmitInfoKHR = VkTimelineSemaphoreSubmitInfo + +const VkSemaphoreWaitInfoKHR = VkSemaphoreWaitInfo + +const VkSemaphoreSignalInfoKHR = VkSemaphoreSignalInfo + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreCounterValueKHR ) ( VkDevice device , VkSemaphore semaphore , uint64_t * pValue ) +const PFN_vkGetSemaphoreCounterValueKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkWaitSemaphoresKHR ) ( VkDevice device , const VkSemaphoreWaitInfo * pWaitInfo , uint64_t timeout ) +const PFN_vkWaitSemaphoresKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSignalSemaphoreKHR ) ( VkDevice device , const VkSemaphoreSignalInfo * pSignalInfo ) +const PFN_vkSignalSemaphoreKHR = Ptr{Cvoid} + +function vkGetSemaphoreCounterValueKHR(device, semaphore, pValue) + ccall((:vkGetSemaphoreCounterValueKHR, libvulkan), VkResult, (VkDevice, VkSemaphore, Ptr{UInt64}), device, semaphore, pValue) +end + +function vkWaitSemaphoresKHR(device, pWaitInfo, timeout) + ccall((:vkWaitSemaphoresKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreWaitInfo}, UInt64), device, pWaitInfo, timeout) +end + +function vkSignalSemaphoreKHR(device, pSignalInfo) + ccall((:vkSignalSemaphoreKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreSignalInfo}), device, pSignalInfo) +end + +const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = VkPhysicalDeviceVulkanMemoryModelFeatures + +struct VkSurfaceProtectedCapabilitiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsProtected::VkBool32 +end + +const VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures + +const VkAttachmentReferenceStencilLayoutKHR = VkAttachmentReferenceStencilLayout + +const VkAttachmentDescriptionStencilLayoutKHR = VkAttachmentDescriptionStencilLayout + +const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VkPhysicalDeviceUniformBufferStandardLayoutFeatures + +const VkPhysicalDeviceBufferDeviceAddressFeaturesKHR = VkPhysicalDeviceBufferDeviceAddressFeatures + +const VkBufferDeviceAddressInfoKHR = VkBufferDeviceAddressInfo + +const VkBufferOpaqueCaptureAddressCreateInfoKHR = VkBufferOpaqueCaptureAddressCreateInfo + +const VkMemoryOpaqueCaptureAddressAllocateInfoKHR = VkMemoryOpaqueCaptureAddressAllocateInfo + +const VkDeviceMemoryOpaqueCaptureAddressInfoKHR = VkDeviceMemoryOpaqueCaptureAddressInfo + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetBufferOpaqueCaptureAddressKHR ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferOpaqueCaptureAddressKHR = Ptr{Cvoid} + +# typedef uint64_t ( VKAPI_PTR * PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR ) ( VkDevice device , const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo ) +const PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR = Ptr{Cvoid} + +function vkGetBufferDeviceAddressKHR(device, pInfo) + ccall((:vkGetBufferDeviceAddressKHR, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetBufferOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetBufferOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +function vkGetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo) + ccall((:vkGetDeviceMemoryOpaqueCaptureAddressKHR, libvulkan), UInt64, (VkDevice, Ptr{VkDeviceMemoryOpaqueCaptureAddressInfo}), device, pInfo) +end + +@cenum VkPipelineExecutableStatisticFormatKHR::UInt32 begin + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3 + VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 2147483647 +end + +struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineExecutableInfo::VkBool32 +end + +struct VkPipelineInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline +end + +struct VkPipelineExecutablePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + stages::VkShaderStageFlags + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + subgroupSize::UInt32 +end + +struct VkPipelineExecutableInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pipeline::VkPipeline + executableIndex::UInt32 +end + +struct VkPipelineExecutableStatisticValueKHR + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol) + f === :b32 && return Ptr{VkBool32}(x + 0) + f === :i64 && return Ptr{Int64}(x + 0) + f === :u64 && return Ptr{UInt64}(x + 0) + f === :f64 && return Ptr{Cdouble}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPipelineExecutableStatisticValueKHR, f::Symbol) + r = Ref{VkPipelineExecutableStatisticValueKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkPipelineExecutableStatisticValueKHR}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPipelineExecutableStatisticValueKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPipelineExecutableStatisticKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + format::VkPipelineExecutableStatisticFormatKHR + value::VkPipelineExecutableStatisticValueKHR +end + +struct VkPipelineExecutableInternalRepresentationKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + description::NTuple{256, Cchar} + isText::VkBool32 + dataSize::Csize_t + pData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutablePropertiesKHR ) ( VkDevice device , const VkPipelineInfoKHR * pPipelineInfo , uint32_t * pExecutableCount , VkPipelineExecutablePropertiesKHR * pProperties ) +const PFN_vkGetPipelineExecutablePropertiesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableStatisticsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pStatisticCount , VkPipelineExecutableStatisticKHR * pStatistics ) +const PFN_vkGetPipelineExecutableStatisticsKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPipelineExecutableInternalRepresentationsKHR ) ( VkDevice device , const VkPipelineExecutableInfoKHR * pExecutableInfo , uint32_t * pInternalRepresentationCount , VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations ) +const PFN_vkGetPipelineExecutableInternalRepresentationsKHR = Ptr{Cvoid} + +function vkGetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties) + ccall((:vkGetPipelineExecutablePropertiesKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutablePropertiesKHR}), device, pPipelineInfo, pExecutableCount, pProperties) +end + +function vkGetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics) + ccall((:vkGetPipelineExecutableStatisticsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableStatisticKHR}), device, pExecutableInfo, pStatisticCount, pStatistics) +end + +function vkGetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) + ccall((:vkGetPipelineExecutableInternalRepresentationsKHR, libvulkan), VkResult, (VkDevice, Ptr{VkPipelineExecutableInfoKHR}, Ptr{UInt32}, Ptr{VkPipelineExecutableInternalRepresentationKHR}), device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations) +end + +const VkDebugReportCallbackEXT_T = Cvoid + +const VkDebugReportCallbackEXT = Ptr{VkDebugReportCallbackEXT_T} + +@cenum VkDebugReportObjectTypeEXT::UInt32 begin + 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_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_ACCELERATION_STRUCTURE_KHR_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28 + VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33 + 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_ACCELERATION_STRUCTURE_NV_EXT = 1000165000 + VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDebugReportFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugReportFlagsEXT = VkFlags + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugReportCallbackEXT ) ( VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage , void * pUserData ) +const PFN_vkDebugReportCallbackEXT = Ptr{Cvoid} + +struct VkDebugReportCallbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugReportFlagsEXT + pfnCallback::PFN_vkDebugReportCallbackEXT + pUserData::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugReportCallbackEXT ) ( VkInstance instance , const VkDebugReportCallbackCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugReportCallbackEXT * pCallback ) +const PFN_vkCreateDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugReportCallbackEXT ) ( VkInstance instance , VkDebugReportCallbackEXT callback , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugReportCallbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDebugReportMessageEXT ) ( VkInstance instance , VkDebugReportFlagsEXT flags , VkDebugReportObjectTypeEXT objectType , uint64_t object , size_t location , int32_t messageCode , const char * pLayerPrefix , const char * pMessage ) +const PFN_vkDebugReportMessageEXT = Ptr{Cvoid} + +function vkCreateDebugReportCallbackEXT(instance, pCreateInfo, pAllocator, pCallback) + ccall((:vkCreateDebugReportCallbackEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugReportCallbackCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugReportCallbackEXT}), instance, pCreateInfo, pAllocator, pCallback) +end + +function vkDestroyDebugReportCallbackEXT(instance, callback, pAllocator) + ccall((:vkDestroyDebugReportCallbackEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportCallbackEXT, Ptr{VkAllocationCallbacks}), instance, callback, pAllocator) +end + +function vkDebugReportMessageEXT(instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) + ccall((:vkDebugReportMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugReportFlagsEXT, VkDebugReportObjectTypeEXT, UInt64, Csize_t, Int32, Ptr{Cchar}, Ptr{Cchar}), instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage) +end + +@cenum VkRasterizationOrderAMD::UInt32 begin + VK_RASTERIZATION_ORDER_STRICT_AMD = 0 + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1 + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 2147483647 +end + +struct VkPipelineRasterizationStateRasterizationOrderAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + rasterizationOrder::VkRasterizationOrderAMD +end + +struct VkDebugMarkerObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugMarkerObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkDebugReportObjectTypeEXT + object::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +struct VkDebugMarkerMarkerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pMarkerName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectTagEXT ) ( VkDevice device , const VkDebugMarkerObjectTagInfoEXT * pTagInfo ) +const PFN_vkDebugMarkerSetObjectTagEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkDebugMarkerSetObjectNameEXT ) ( VkDevice device , const VkDebugMarkerObjectNameInfoEXT * pNameInfo ) +const PFN_vkDebugMarkerSetObjectNameEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerBeginEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerBeginEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerEndEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdDebugMarkerEndEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDebugMarkerInsertEXT ) ( VkCommandBuffer commandBuffer , const VkDebugMarkerMarkerInfoEXT * pMarkerInfo ) +const PFN_vkCmdDebugMarkerInsertEXT = Ptr{Cvoid} + +function vkDebugMarkerSetObjectTagEXT(device, pTagInfo) + ccall((:vkDebugMarkerSetObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectTagInfoEXT}), device, pTagInfo) +end + +function vkDebugMarkerSetObjectNameEXT(device, pNameInfo) + ccall((:vkDebugMarkerSetObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugMarkerObjectNameInfoEXT}), device, pNameInfo) +end + +function vkCmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerBeginEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +function vkCmdDebugMarkerEndEXT(commandBuffer) + ccall((:vkCmdDebugMarkerEndEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo) + ccall((:vkCmdDebugMarkerInsertEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugMarkerMarkerInfoEXT}), commandBuffer, pMarkerInfo) +end + +struct VkDedicatedAllocationImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationBufferCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocation::VkBool32 +end + +struct VkDedicatedAllocationMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + image::VkImage + buffer::VkBuffer +end + +const VkPipelineRasterizationStateStreamCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceTransformFeedbackFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + transformFeedback::VkBool32 + geometryStreams::VkBool32 +end + +struct VkPhysicalDeviceTransformFeedbackPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxTransformFeedbackStreams::UInt32 + maxTransformFeedbackBuffers::UInt32 + maxTransformFeedbackBufferSize::VkDeviceSize + maxTransformFeedbackStreamDataSize::UInt32 + maxTransformFeedbackBufferDataSize::UInt32 + maxTransformFeedbackBufferDataStride::UInt32 + transformFeedbackQueries::VkBool32 + transformFeedbackStreamsLinesTriangles::VkBool32 + transformFeedbackRasterizationStreamSelect::VkBool32 + transformFeedbackDraw::VkBool32 +end + +struct VkPipelineRasterizationStateStreamCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationStateStreamCreateFlagsEXT + rasterizationStream::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindTransformFeedbackBuffersEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes ) +const PFN_vkCmdBindTransformFeedbackBuffersEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdBeginTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndTransformFeedbackEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstCounterBuffer , uint32_t counterBufferCount , const VkBuffer * pCounterBuffers , const VkDeviceSize * pCounterBufferOffsets ) +const PFN_vkCmdEndTransformFeedbackEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , VkQueryControlFlags flags , uint32_t index ) +const PFN_vkCmdBeginQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndQueryIndexedEXT ) ( VkCommandBuffer commandBuffer , VkQueryPool queryPool , uint32_t query , uint32_t index ) +const PFN_vkCmdEndQueryIndexedEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectByteCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t instanceCount , uint32_t firstInstance , VkBuffer counterBuffer , VkDeviceSize counterBufferOffset , uint32_t counterOffset , uint32_t vertexStride ) +const PFN_vkCmdDrawIndirectByteCountEXT = Ptr{Cvoid} + +function vkCmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) + ccall((:vkCmdBindTransformFeedbackBuffersEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes) +end + +function vkCmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdBeginTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) + ccall((:vkCmdEndTransformFeedbackEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}), commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets) +end + +function vkCmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index) + ccall((:vkCmdBeginQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, VkQueryControlFlags, UInt32), commandBuffer, queryPool, query, flags, index) +end + +function vkCmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index) + ccall((:vkCmdEndQueryIndexedEXT, libvulkan), Cvoid, (VkCommandBuffer, VkQueryPool, UInt32, UInt32), commandBuffer, queryPool, query, index) +end + +function vkCmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) + ccall((:vkCmdDrawIndirectByteCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride) +end + +struct VkImageViewHandleInfoNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + imageView::VkImageView + descriptorType::VkDescriptorType + sampler::VkSampler +end + +struct VkImageViewAddressPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress + size::VkDeviceSize +end + +# typedef uint32_t ( VKAPI_PTR * PFN_vkGetImageViewHandleNVX ) ( VkDevice device , const VkImageViewHandleInfoNVX * pInfo ) +const PFN_vkGetImageViewHandleNVX = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageViewAddressNVX ) ( VkDevice device , VkImageView imageView , VkImageViewAddressPropertiesNVX * pProperties ) +const PFN_vkGetImageViewAddressNVX = Ptr{Cvoid} + +function vkGetImageViewHandleNVX(device, pInfo) + ccall((:vkGetImageViewHandleNVX, libvulkan), UInt32, (VkDevice, Ptr{VkImageViewHandleInfoNVX}), device, pInfo) +end + +function vkGetImageViewAddressNVX(device, imageView, pProperties) + ccall((:vkGetImageViewAddressNVX, libvulkan), VkResult, (VkDevice, VkImageView, Ptr{VkImageViewAddressPropertiesNVX}), device, imageView, pProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndirectCountAMD = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawIndexedIndirectCountAMD ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawIndexedIndirectCountAMD = Ptr{Cvoid} + +function vkCmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +function vkCmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawIndexedIndirectCountAMD, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkTextureLODGatherFormatPropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + supportsTextureGatherLODBiasAMD::VkBool32 +end + +@cenum VkShaderInfoTypeAMD::UInt32 begin + 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_MAX_ENUM_AMD = 2147483647 +end + +struct VkShaderResourceUsageAMD + numUsedVgprs::UInt32 + numUsedSgprs::UInt32 + ldsSizePerLocalWorkGroup::UInt32 + ldsUsageSizeInBytes::Csize_t + scratchMemUsageInBytes::Csize_t +end + +struct VkShaderStatisticsInfoAMD + shaderStageMask::VkShaderStageFlags + resourceUsage::VkShaderResourceUsageAMD + numPhysicalVgprs::UInt32 + numPhysicalSgprs::UInt32 + numAvailableVgprs::UInt32 + numAvailableSgprs::UInt32 + computeWorkGroupSize::NTuple{3, UInt32} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetShaderInfoAMD ) ( VkDevice device , VkPipeline pipeline , VkShaderStageFlagBits shaderStage , VkShaderInfoTypeAMD infoType , size_t * pInfoSize , void * pInfo ) +const PFN_vkGetShaderInfoAMD = Ptr{Cvoid} + +function vkGetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo) + ccall((:vkGetShaderInfoAMD, libvulkan), VkResult, (VkDevice, VkPipeline, VkShaderStageFlagBits, VkShaderInfoTypeAMD, Ptr{Csize_t}, Ptr{Cvoid}), device, pipeline, shaderStage, infoType, pInfoSize, pInfo) +end + +struct VkPhysicalDeviceCornerSampledImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cornerSampledImage::VkBool32 +end + +@cenum VkExternalMemoryHandleTypeFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryHandleTypeFlagsNV = VkFlags + +@cenum VkExternalMemoryFeatureFlagBitsNV::UInt32 begin + 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 +end + +const VkExternalMemoryFeatureFlagsNV = VkFlags + +struct VkExternalImageFormatPropertiesNV + imageFormatProperties::VkImageFormatProperties + externalMemoryFeatures::VkExternalMemoryFeatureFlagsNV + exportFromImportedHandleTypes::VkExternalMemoryHandleTypeFlagsNV + compatibleHandleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV ) ( VkPhysicalDevice physicalDevice , VkFormat format , VkImageType type , VkImageTiling tiling , VkImageUsageFlags usage , VkImageCreateFlags flags , VkExternalMemoryHandleTypeFlagsNV externalHandleType , VkExternalImageFormatPropertiesNV * pExternalImageFormatProperties ) +const PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceExternalImageFormatPropertiesNV(physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) + ccall((:vkGetPhysicalDeviceExternalImageFormatPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, VkFormat, VkImageType, VkImageTiling, VkImageUsageFlags, VkImageCreateFlags, VkExternalMemoryHandleTypeFlagsNV, Ptr{VkExternalImageFormatPropertiesNV}), physicalDevice, format, type, tiling, usage, flags, externalHandleType, pExternalImageFormatProperties) +end + +struct VkExternalMemoryImageCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +struct VkExportMemoryAllocateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleTypes::VkExternalMemoryHandleTypeFlagsNV +end + +@cenum VkValidationCheckEXT::UInt32 begin + VK_VALIDATION_CHECK_ALL_EXT = 0 + VK_VALIDATION_CHECK_SHADERS_EXT = 1 + VK_VALIDATION_CHECK_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFlagsEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + disabledValidationCheckCount::UInt32 + pDisabledValidationChecks::Ptr{VkValidationCheckEXT} +end + +struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + textureCompressionASTC_HDR::VkBool32 +end + +struct VkImageViewASTCDecodeModeEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeMode::VkFormat +end + +struct VkPhysicalDeviceASTCDecodeFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + decodeModeSharedExponent::VkBool32 +end + +@cenum VkConditionalRenderingFlagBitsEXT::UInt32 begin + VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 1 + VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkConditionalRenderingFlagsEXT = VkFlags + +struct VkConditionalRenderingBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + buffer::VkBuffer + offset::VkDeviceSize + flags::VkConditionalRenderingFlagsEXT +end + +struct VkPhysicalDeviceConditionalRenderingFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRendering::VkBool32 + inheritedConditionalRendering::VkBool32 +end + +struct VkCommandBufferInheritanceConditionalRenderingInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + conditionalRenderingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer , const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin ) +const PFN_vkCmdBeginConditionalRenderingEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndConditionalRenderingEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndConditionalRenderingEXT = Ptr{Cvoid} + +function vkCmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin) + ccall((:vkCmdBeginConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkConditionalRenderingBeginInfoEXT}), commandBuffer, pConditionalRenderingBegin) +end + +function vkCmdEndConditionalRenderingEXT(commandBuffer) + ccall((:vkCmdEndConditionalRenderingEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +struct VkViewportWScalingNV + xcoeff::Cfloat + ycoeff::Cfloat +end + +struct VkPipelineViewportWScalingStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + viewportWScalingEnable::VkBool32 + viewportCount::UInt32 + pViewportWScalings::Ptr{VkViewportWScalingNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWScalingNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkViewportWScalingNV * pViewportWScalings ) +const PFN_vkCmdSetViewportWScalingNV = Ptr{Cvoid} + +function vkCmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings) + ccall((:vkCmdSetViewportWScalingNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkViewportWScalingNV}), commandBuffer, firstViewport, viewportCount, pViewportWScalings) +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseDisplayEXT ) ( VkPhysicalDevice physicalDevice , VkDisplayKHR display ) +const PFN_vkReleaseDisplayEXT = Ptr{Cvoid} + +function vkReleaseDisplayEXT(physicalDevice, display) + ccall((:vkReleaseDisplayEXT, libvulkan), VkResult, (VkPhysicalDevice, VkDisplayKHR), physicalDevice, display) +end + +@cenum VkSurfaceCounterFlagBitsEXT::UInt32 begin + VK_SURFACE_COUNTER_VBLANK_EXT = 1 + VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkSurfaceCounterFlagsEXT = VkFlags + +struct VkSurfaceCapabilities2EXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImageCount::UInt32 + maxImageCount::UInt32 + currentExtent::VkExtent2D + minImageExtent::VkExtent2D + maxImageExtent::VkExtent2D + maxImageArrayLayers::UInt32 + supportedTransforms::VkSurfaceTransformFlagsKHR + currentTransform::VkSurfaceTransformFlagBitsKHR + supportedCompositeAlpha::VkCompositeAlphaFlagsKHR + supportedUsageFlags::VkImageUsageFlags + supportedSurfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT ) ( VkPhysicalDevice physicalDevice , VkSurfaceKHR surface , VkSurfaceCapabilities2EXT * pSurfaceCapabilities ) +const PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfaceCapabilities2EXT(physicalDevice, surface, pSurfaceCapabilities) + ccall((:vkGetPhysicalDeviceSurfaceCapabilities2EXT, libvulkan), VkResult, (VkPhysicalDevice, VkSurfaceKHR, Ptr{VkSurfaceCapabilities2EXT}), physicalDevice, surface, pSurfaceCapabilities) +end + +@cenum VkDisplayPowerStateEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDeviceEventTypeEXT::UInt32 begin + VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0 + VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkDisplayEventTypeEXT::UInt32 begin + VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0 + VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 2147483647 +end + +struct VkDisplayPowerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + powerState::VkDisplayPowerStateEXT +end + +struct VkDeviceEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceEvent::VkDeviceEventTypeEXT +end + +struct VkDisplayEventInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayEvent::VkDisplayEventTypeEXT +end + +struct VkSwapchainCounterCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + surfaceCounters::VkSurfaceCounterFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkDisplayPowerControlEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayPowerInfoEXT * pDisplayPowerInfo ) +const PFN_vkDisplayPowerControlEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDeviceEventEXT ) ( VkDevice device , const VkDeviceEventInfoEXT * pDeviceEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDeviceEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkRegisterDisplayEventEXT ) ( VkDevice device , VkDisplayKHR display , const VkDisplayEventInfoEXT * pDisplayEventInfo , const VkAllocationCallbacks * pAllocator , VkFence * pFence ) +const PFN_vkRegisterDisplayEventEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSwapchainCounterEXT ) ( VkDevice device , VkSwapchainKHR swapchain , VkSurfaceCounterFlagBitsEXT counter , uint64_t * pCounterValue ) +const PFN_vkGetSwapchainCounterEXT = Ptr{Cvoid} + +function vkDisplayPowerControlEXT(device, display, pDisplayPowerInfo) + ccall((:vkDisplayPowerControlEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayPowerInfoEXT}), device, display, pDisplayPowerInfo) +end + +function vkRegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence) + ccall((:vkRegisterDeviceEventEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDeviceEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, pDeviceEventInfo, pAllocator, pFence) +end + +function vkRegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence) + ccall((:vkRegisterDisplayEventEXT, libvulkan), VkResult, (VkDevice, VkDisplayKHR, Ptr{VkDisplayEventInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkFence}), device, display, pDisplayEventInfo, pAllocator, pFence) +end + +function vkGetSwapchainCounterEXT(device, swapchain, counter, pCounterValue) + ccall((:vkGetSwapchainCounterEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, VkSurfaceCounterFlagBitsEXT, Ptr{UInt64}), device, swapchain, counter, pCounterValue) +end + +struct VkRefreshCycleDurationGOOGLE + refreshDuration::UInt64 +end + +struct VkPastPresentationTimingGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 + actualPresentTime::UInt64 + earliestPresentTime::UInt64 + presentMargin::UInt64 +end + +struct VkPresentTimeGOOGLE + presentID::UInt32 + desiredPresentTime::UInt64 +end + +struct VkPresentTimesInfoGOOGLE + sType::VkStructureType + pNext::Ptr{Cvoid} + swapchainCount::UInt32 + pTimes::Ptr{VkPresentTimeGOOGLE} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRefreshCycleDurationGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties ) +const PFN_vkGetRefreshCycleDurationGOOGLE = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPastPresentationTimingGOOGLE ) ( VkDevice device , VkSwapchainKHR swapchain , uint32_t * pPresentationTimingCount , VkPastPresentationTimingGOOGLE * pPresentationTimings ) +const PFN_vkGetPastPresentationTimingGOOGLE = Ptr{Cvoid} + +function vkGetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties) + ccall((:vkGetRefreshCycleDurationGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{VkRefreshCycleDurationGOOGLE}), device, swapchain, pDisplayTimingProperties) +end + +function vkGetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings) + ccall((:vkGetPastPresentationTimingGOOGLE, libvulkan), VkResult, (VkDevice, VkSwapchainKHR, Ptr{UInt32}, Ptr{VkPastPresentationTimingGOOGLE}), device, swapchain, pPresentationTimingCount, pPresentationTimings) +end + +struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX + sType::VkStructureType + pNext::Ptr{Cvoid} + perViewPositionAllComponents::VkBool32 +end + +@cenum VkViewportCoordinateSwizzleNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineViewportSwizzleStateCreateFlagsNV = VkFlags + +struct VkViewportSwizzleNV + x::VkViewportCoordinateSwizzleNV + y::VkViewportCoordinateSwizzleNV + z::VkViewportCoordinateSwizzleNV + w::VkViewportCoordinateSwizzleNV +end + +struct VkPipelineViewportSwizzleStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineViewportSwizzleStateCreateFlagsNV + viewportCount::UInt32 + pViewportSwizzles::Ptr{VkViewportSwizzleNV} +end + +@cenum VkDiscardRectangleModeEXT::UInt32 begin + VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0 + VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1 + VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineDiscardRectangleStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDiscardRectanglePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDiscardRectangles::UInt32 +end + +struct VkPipelineDiscardRectangleStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineDiscardRectangleStateCreateFlagsEXT + discardRectangleMode::VkDiscardRectangleModeEXT + discardRectangleCount::UInt32 + pDiscardRectangles::Ptr{VkRect2D} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDiscardRectangleEXT ) ( VkCommandBuffer commandBuffer , uint32_t firstDiscardRectangle , uint32_t discardRectangleCount , const VkRect2D * pDiscardRectangles ) +const PFN_vkCmdSetDiscardRectangleEXT = Ptr{Cvoid} + +function vkCmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) + ccall((:vkCmdSetDiscardRectangleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles) +end + +@cenum VkConservativeRasterizationModeEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineRasterizationConservativeStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + primitiveOverestimationSize::Cfloat + maxExtraPrimitiveOverestimationSize::Cfloat + extraPrimitiveOverestimationSizeGranularity::Cfloat + primitiveUnderestimation::VkBool32 + conservativePointAndLineRasterization::VkBool32 + degenerateTrianglesRasterized::VkBool32 + degenerateLinesRasterized::VkBool32 + fullyCoveredFragmentShaderInputVariable::VkBool32 + conservativeRasterizationPostDepthCoverage::VkBool32 +end + +struct VkPipelineRasterizationConservativeStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationConservativeStateCreateFlagsEXT + conservativeRasterizationMode::VkConservativeRasterizationModeEXT + extraPrimitiveOverestimationSize::Cfloat +end + +const VkPipelineRasterizationDepthClipStateCreateFlagsEXT = VkFlags + +struct VkPhysicalDeviceDepthClipEnableFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + depthClipEnable::VkBool32 +end + +struct VkPipelineRasterizationDepthClipStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineRasterizationDepthClipStateCreateFlagsEXT + depthClipEnable::VkBool32 +end + +struct VkXYColorEXT + x::Cfloat + y::Cfloat +end + +struct VkHdrMetadataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + displayPrimaryRed::VkXYColorEXT + displayPrimaryGreen::VkXYColorEXT + displayPrimaryBlue::VkXYColorEXT + whitePoint::VkXYColorEXT + maxLuminance::Cfloat + minLuminance::Cfloat + maxContentLightLevel::Cfloat + maxFrameAverageLightLevel::Cfloat +end + +# typedef void ( VKAPI_PTR * PFN_vkSetHdrMetadataEXT ) ( VkDevice device , uint32_t swapchainCount , const VkSwapchainKHR * pSwapchains , const VkHdrMetadataEXT * pMetadata ) +const PFN_vkSetHdrMetadataEXT = Ptr{Cvoid} + +function vkSetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata) + ccall((:vkSetHdrMetadataEXT, libvulkan), Cvoid, (VkDevice, UInt32, Ptr{VkSwapchainKHR}, Ptr{VkHdrMetadataEXT}), device, swapchainCount, pSwapchains, pMetadata) +end + +const VkDebugUtilsMessengerEXT_T = Cvoid + +const VkDebugUtilsMessengerEXT = Ptr{VkDebugUtilsMessengerEXT_T} + +const VkDebugUtilsMessengerCallbackDataFlagsEXT = VkFlags + +@cenum VkDebugUtilsMessageSeverityFlagBitsEXT::UInt32 begin + 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 +end + +@cenum VkDebugUtilsMessageTypeFlagBitsEXT::UInt32 begin + 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 +end + +const VkDebugUtilsMessageTypeFlagsEXT = VkFlags + +const VkDebugUtilsMessageSeverityFlagsEXT = VkFlags + +const VkDebugUtilsMessengerCreateFlagsEXT = VkFlags + +struct VkDebugUtilsLabelEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pLabelName::Ptr{Cchar} + color::NTuple{4, Cfloat} +end + +struct VkDebugUtilsObjectNameInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + pObjectName::Ptr{Cchar} +end + +struct VkDebugUtilsMessengerCallbackDataEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCallbackDataFlagsEXT + pMessageIdName::Ptr{Cchar} + messageIdNumber::Int32 + pMessage::Ptr{Cchar} + queueLabelCount::UInt32 + pQueueLabels::Ptr{VkDebugUtilsLabelEXT} + cmdBufLabelCount::UInt32 + pCmdBufLabels::Ptr{VkDebugUtilsLabelEXT} + objectCount::UInt32 + pObjects::Ptr{VkDebugUtilsObjectNameInfoEXT} +end + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkDebugUtilsMessengerCallbackEXT ) ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData , void * pUserData ) +const PFN_vkDebugUtilsMessengerCallbackEXT = Ptr{Cvoid} + +struct VkDebugUtilsMessengerCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDebugUtilsMessengerCreateFlagsEXT + messageSeverity::VkDebugUtilsMessageSeverityFlagsEXT + messageType::VkDebugUtilsMessageTypeFlagsEXT + pfnUserCallback::PFN_vkDebugUtilsMessengerCallbackEXT + pUserData::Ptr{Cvoid} +end + +struct VkDebugUtilsObjectTagInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + objectType::VkObjectType + objectHandle::UInt64 + tagName::UInt64 + tagSize::Csize_t + pTag::Ptr{Cvoid} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectNameEXT ) ( VkDevice device , const VkDebugUtilsObjectNameInfoEXT * pNameInfo ) +const PFN_vkSetDebugUtilsObjectNameEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetDebugUtilsObjectTagEXT ) ( VkDevice device , const VkDebugUtilsObjectTagInfoEXT * pTagInfo ) +const PFN_vkSetDebugUtilsObjectTagEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueBeginDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueEndDebugUtilsLabelEXT ) ( VkQueue queue ) +const PFN_vkQueueEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkQueueInsertDebugUtilsLabelEXT ) ( VkQueue queue , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkQueueInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBeginDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdBeginDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdEndDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer ) +const PFN_vkCmdEndDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdInsertDebugUtilsLabelEXT ) ( VkCommandBuffer commandBuffer , const VkDebugUtilsLabelEXT * pLabelInfo ) +const PFN_vkCmdInsertDebugUtilsLabelEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateDebugUtilsMessengerEXT ) ( VkInstance instance , const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkDebugUtilsMessengerEXT * pMessenger ) +const PFN_vkCreateDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyDebugUtilsMessengerEXT ) ( VkInstance instance , VkDebugUtilsMessengerEXT messenger , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyDebugUtilsMessengerEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkSubmitDebugUtilsMessageEXT ) ( VkInstance instance , VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity , VkDebugUtilsMessageTypeFlagsEXT messageTypes , const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData ) +const PFN_vkSubmitDebugUtilsMessageEXT = Ptr{Cvoid} + +function vkSetDebugUtilsObjectNameEXT(device, pNameInfo) + ccall((:vkSetDebugUtilsObjectNameEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectNameInfoEXT}), device, pNameInfo) +end + +function vkSetDebugUtilsObjectTagEXT(device, pTagInfo) + ccall((:vkSetDebugUtilsObjectTagEXT, libvulkan), VkResult, (VkDevice, Ptr{VkDebugUtilsObjectTagInfoEXT}), device, pTagInfo) +end + +function vkQueueBeginDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkQueueEndDebugUtilsLabelEXT(queue) + ccall((:vkQueueEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue,), queue) +end + +function vkQueueInsertDebugUtilsLabelEXT(queue, pLabelInfo) + ccall((:vkQueueInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkQueue, Ptr{VkDebugUtilsLabelEXT}), queue, pLabelInfo) +end + +function vkCmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdBeginDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCmdEndDebugUtilsLabelEXT(commandBuffer) + ccall((:vkCmdEndDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer,), commandBuffer) +end + +function vkCmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo) + ccall((:vkCmdInsertDebugUtilsLabelEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkDebugUtilsLabelEXT}), commandBuffer, pLabelInfo) +end + +function vkCreateDebugUtilsMessengerEXT(instance, pCreateInfo, pAllocator, pMessenger) + ccall((:vkCreateDebugUtilsMessengerEXT, libvulkan), VkResult, (VkInstance, Ptr{VkDebugUtilsMessengerCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkDebugUtilsMessengerEXT}), instance, pCreateInfo, pAllocator, pMessenger) +end + +function vkDestroyDebugUtilsMessengerEXT(instance, messenger, pAllocator) + ccall((:vkDestroyDebugUtilsMessengerEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessengerEXT, Ptr{VkAllocationCallbacks}), instance, messenger, pAllocator) +end + +function vkSubmitDebugUtilsMessageEXT(instance, messageSeverity, messageTypes, pCallbackData) + ccall((:vkSubmitDebugUtilsMessageEXT, libvulkan), Cvoid, (VkInstance, VkDebugUtilsMessageSeverityFlagBitsEXT, VkDebugUtilsMessageTypeFlagsEXT, Ptr{VkDebugUtilsMessengerCallbackDataEXT}), instance, messageSeverity, messageTypes, pCallbackData) +end + +const VkSamplerReductionModeEXT = VkSamplerReductionMode + +const VkSamplerReductionModeCreateInfoEXT = VkSamplerReductionModeCreateInfo + +const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VkPhysicalDeviceSamplerFilterMinmaxProperties + +struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + inlineUniformBlock::VkBool32 + descriptorBindingInlineUniformBlockUpdateAfterBind::VkBool32 +end + +struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockSize::UInt32 + maxPerStageDescriptorInlineUniformBlocks::UInt32 + maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks::UInt32 + maxDescriptorSetInlineUniformBlocks::UInt32 + maxDescriptorSetUpdateAfterBindInlineUniformBlocks::UInt32 +end + +struct VkWriteDescriptorSetInlineUniformBlockEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + dataSize::UInt32 + pData::Ptr{Cvoid} +end + +struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxInlineUniformBlockBindings::UInt32 +end + +struct VkSampleLocationEXT + x::Cfloat + y::Cfloat +end + +struct VkSampleLocationsInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsPerPixel::VkSampleCountFlagBits + sampleLocationGridSize::VkExtent2D + sampleLocationsCount::UInt32 + pSampleLocations::Ptr{VkSampleLocationEXT} +end + +struct VkAttachmentSampleLocationsEXT + attachmentIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkSubpassSampleLocationsEXT + subpassIndex::UInt32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkRenderPassSampleLocationsBeginInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + attachmentInitialSampleLocationsCount::UInt32 + pAttachmentInitialSampleLocations::Ptr{VkAttachmentSampleLocationsEXT} + postSubpassSampleLocationsCount::UInt32 + pPostSubpassSampleLocations::Ptr{VkSubpassSampleLocationsEXT} +end + +struct VkPipelineSampleLocationsStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationsEnable::VkBool32 + sampleLocationsInfo::VkSampleLocationsInfoEXT +end + +struct VkPhysicalDeviceSampleLocationsPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleLocationSampleCounts::VkSampleCountFlags + maxSampleLocationGridSize::VkExtent2D + sampleLocationCoordinateRange::NTuple{2, Cfloat} + sampleLocationSubPixelBits::UInt32 + variableSampleLocations::VkBool32 +end + +struct VkMultisamplePropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxSampleLocationGridSize::VkExtent2D +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetSampleLocationsEXT ) ( VkCommandBuffer commandBuffer , const VkSampleLocationsInfoEXT * pSampleLocationsInfo ) +const PFN_vkCmdSetSampleLocationsEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT ) ( VkPhysicalDevice physicalDevice , VkSampleCountFlagBits samples , VkMultisamplePropertiesEXT * pMultisampleProperties ) +const PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT = Ptr{Cvoid} + +function vkCmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo) + ccall((:vkCmdSetSampleLocationsEXT, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkSampleLocationsInfoEXT}), commandBuffer, pSampleLocationsInfo) +end + +function vkGetPhysicalDeviceMultisamplePropertiesEXT(physicalDevice, samples, pMultisampleProperties) + ccall((:vkGetPhysicalDeviceMultisamplePropertiesEXT, libvulkan), Cvoid, (VkPhysicalDevice, VkSampleCountFlagBits, Ptr{VkMultisamplePropertiesEXT}), physicalDevice, samples, pMultisampleProperties) +end + +@cenum VkBlendOverlapEXT::UInt32 begin + VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0 + VK_BLEND_OVERLAP_DISJOINT_EXT = 1 + VK_BLEND_OVERLAP_CONJOINT_EXT = 2 + VK_BLEND_OVERLAP_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendCoherentOperations::VkBool32 +end + +struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + advancedBlendMaxColorAttachments::UInt32 + advancedBlendIndependentBlend::VkBool32 + advancedBlendNonPremultipliedSrcColor::VkBool32 + advancedBlendNonPremultipliedDstColor::VkBool32 + advancedBlendCorrelatedOverlap::VkBool32 + advancedBlendAllOperations::VkBool32 +end + +struct VkPipelineColorBlendAdvancedStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + srcPremultiplied::VkBool32 + dstPremultiplied::VkBool32 + blendOverlap::VkBlendOverlapEXT +end + +const VkPipelineCoverageToColorStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageToColorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageToColorStateCreateFlagsNV + coverageToColorEnable::VkBool32 + coverageToColorLocation::UInt32 +end + +@cenum VkCoverageModulationModeNV::UInt32 begin + 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_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageModulationStateCreateFlagsNV = VkFlags + +struct VkPipelineCoverageModulationStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageModulationStateCreateFlagsNV + coverageModulationMode::VkCoverageModulationModeNV + coverageModulationTableEnable::VkBool32 + coverageModulationTableCount::UInt32 + pCoverageModulationTable::Ptr{Cfloat} +end + +struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMCount::UInt32 + shaderWarpsPerSM::UInt32 +end + +struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderSMBuiltins::VkBool32 +end + +struct VkDrmFormatModifierPropertiesEXT + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + drmFormatModifierTilingFeatures::VkFormatFeatureFlags +end + +struct VkDrmFormatModifierPropertiesListEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifierProperties::Ptr{VkDrmFormatModifierPropertiesEXT} +end + +struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + sharingMode::VkSharingMode + queueFamilyIndexCount::UInt32 + pQueueFamilyIndices::Ptr{UInt32} +end + +struct VkImageDrmFormatModifierListCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifierCount::UInt32 + pDrmFormatModifiers::Ptr{UInt64} +end + +struct VkImageDrmFormatModifierExplicitCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 + drmFormatModifierPlaneCount::UInt32 + pPlaneLayouts::Ptr{VkSubresourceLayout} +end + +struct VkImageDrmFormatModifierPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + drmFormatModifier::UInt64 +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetImageDrmFormatModifierPropertiesEXT ) ( VkDevice device , VkImage image , VkImageDrmFormatModifierPropertiesEXT * pProperties ) +const PFN_vkGetImageDrmFormatModifierPropertiesEXT = Ptr{Cvoid} + +function vkGetImageDrmFormatModifierPropertiesEXT(device, image, pProperties) + ccall((:vkGetImageDrmFormatModifierPropertiesEXT, libvulkan), VkResult, (VkDevice, VkImage, Ptr{VkImageDrmFormatModifierPropertiesEXT}), device, image, pProperties) +end + +const VkValidationCacheEXT_T = Cvoid + +const VkValidationCacheEXT = Ptr{VkValidationCacheEXT_T} + +@cenum VkValidationCacheHeaderVersionEXT::UInt32 begin + VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1 + VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 2147483647 +end + +const VkValidationCacheCreateFlagsEXT = VkFlags + +struct VkValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkValidationCacheCreateFlagsEXT + initialDataSize::Csize_t + pInitialData::Ptr{Cvoid} +end + +struct VkShaderModuleValidationCacheCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + validationCache::VkValidationCacheEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateValidationCacheEXT ) ( VkDevice device , const VkValidationCacheCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkValidationCacheEXT * pValidationCache ) +const PFN_vkCreateValidationCacheEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyValidationCacheEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyValidationCacheEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkMergeValidationCachesEXT ) ( VkDevice device , VkValidationCacheEXT dstCache , uint32_t srcCacheCount , const VkValidationCacheEXT * pSrcCaches ) +const PFN_vkMergeValidationCachesEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetValidationCacheDataEXT ) ( VkDevice device , VkValidationCacheEXT validationCache , size_t * pDataSize , void * pData ) +const PFN_vkGetValidationCacheDataEXT = Ptr{Cvoid} + +function vkCreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache) + ccall((:vkCreateValidationCacheEXT, libvulkan), VkResult, (VkDevice, Ptr{VkValidationCacheCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkValidationCacheEXT}), device, pCreateInfo, pAllocator, pValidationCache) +end + +function vkDestroyValidationCacheEXT(device, validationCache, pAllocator) + ccall((:vkDestroyValidationCacheEXT, libvulkan), Cvoid, (VkDevice, VkValidationCacheEXT, Ptr{VkAllocationCallbacks}), device, validationCache, pAllocator) +end + +function vkMergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches) + ccall((:vkMergeValidationCachesEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, UInt32, Ptr{VkValidationCacheEXT}), device, dstCache, srcCacheCount, pSrcCaches) +end + +function vkGetValidationCacheDataEXT(device, validationCache, pDataSize, pData) + ccall((:vkGetValidationCacheDataEXT, libvulkan), VkResult, (VkDevice, VkValidationCacheEXT, Ptr{Csize_t}, Ptr{Cvoid}), device, validationCache, pDataSize, pData) +end + +const VkDescriptorBindingFlagBitsEXT = VkDescriptorBindingFlagBits + +const VkDescriptorBindingFlagsEXT = VkDescriptorBindingFlags + +const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = VkDescriptorSetLayoutBindingFlagsCreateInfo + +const VkPhysicalDeviceDescriptorIndexingFeaturesEXT = VkPhysicalDeviceDescriptorIndexingFeatures + +const VkPhysicalDeviceDescriptorIndexingPropertiesEXT = VkPhysicalDeviceDescriptorIndexingProperties + +const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = VkDescriptorSetVariableDescriptorCountAllocateInfo + +const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = VkDescriptorSetVariableDescriptorCountLayoutSupport + +@cenum VkShadingRatePaletteEntryNV::UInt32 begin + VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0 + VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1 + VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2 + VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3 + VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10 + VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11 + VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 2147483647 +end + +@cenum VkCoarseSampleOrderTypeNV::UInt32 begin + VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0 + VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1 + VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2 + VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3 + VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 2147483647 +end + +struct VkShadingRatePaletteNV + shadingRatePaletteEntryCount::UInt32 + pShadingRatePaletteEntries::Ptr{VkShadingRatePaletteEntryNV} +end + +struct VkPipelineViewportShadingRateImageStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImageEnable::VkBool32 + viewportCount::UInt32 + pShadingRatePalettes::Ptr{VkShadingRatePaletteNV} +end + +struct VkPhysicalDeviceShadingRateImageFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateImage::VkBool32 + shadingRateCoarseSampleOrder::VkBool32 +end + +struct VkPhysicalDeviceShadingRateImagePropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shadingRateTexelSize::VkExtent2D + shadingRatePaletteSize::UInt32 + shadingRateMaxCoarseSamples::UInt32 +end + +struct VkCoarseSampleLocationNV + pixelX::UInt32 + pixelY::UInt32 + sample::UInt32 +end + +struct VkCoarseSampleOrderCustomNV + shadingRate::VkShadingRatePaletteEntryNV + sampleCount::UInt32 + sampleLocationCount::UInt32 + pSampleLocations::Ptr{VkCoarseSampleLocationNV} +end + +struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + sampleOrderType::VkCoarseSampleOrderTypeNV + customSampleOrderCount::UInt32 + pCustomSampleOrders::Ptr{VkCoarseSampleOrderCustomNV} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindShadingRateImageNV ) ( VkCommandBuffer commandBuffer , VkImageView imageView , VkImageLayout imageLayout ) +const PFN_vkCmdBindShadingRateImageNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportShadingRatePaletteNV ) ( VkCommandBuffer commandBuffer , uint32_t firstViewport , uint32_t viewportCount , const VkShadingRatePaletteNV * pShadingRatePalettes ) +const PFN_vkCmdSetViewportShadingRatePaletteNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCoarseSampleOrderNV ) ( VkCommandBuffer commandBuffer , VkCoarseSampleOrderTypeNV sampleOrderType , uint32_t customSampleOrderCount , const VkCoarseSampleOrderCustomNV * pCustomSampleOrders ) +const PFN_vkCmdSetCoarseSampleOrderNV = Ptr{Cvoid} + +function vkCmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout) + ccall((:vkCmdBindShadingRateImageNV, libvulkan), Cvoid, (VkCommandBuffer, VkImageView, VkImageLayout), commandBuffer, imageView, imageLayout) +end + +function vkCmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) + ccall((:vkCmdSetViewportShadingRatePaletteNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkShadingRatePaletteNV}), commandBuffer, firstViewport, viewportCount, pShadingRatePalettes) +end + +function vkCmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) + ccall((:vkCmdSetCoarseSampleOrderNV, libvulkan), Cvoid, (VkCommandBuffer, VkCoarseSampleOrderTypeNV, UInt32, Ptr{VkCoarseSampleOrderCustomNV}), commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders) +end + +const VkAccelerationStructureKHR_T = Cvoid + +const VkAccelerationStructureKHR = Ptr{VkAccelerationStructureKHR_T} + +const VkAccelerationStructureNV = VkAccelerationStructureKHR + +@cenum VkRayTracingShaderGroupTypeKHR::UInt32 begin + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0 + VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1 + VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2 + VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkRayTracingShaderGroupTypeNV = VkRayTracingShaderGroupTypeKHR + +@cenum VkGeometryTypeKHR::UInt32 begin + VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0 + VK_GEOMETRY_TYPE_AABBS_KHR = 1 + VK_GEOMETRY_TYPE_INSTANCES_KHR = 1000150000 + VK_GEOMETRY_TYPE_TRIANGLES_NV = 0 + VK_GEOMETRY_TYPE_AABBS_NV = 1 + VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryTypeNV = VkGeometryTypeKHR + +@cenum VkAccelerationStructureTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1 + VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0 + VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1 + VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureTypeNV = VkAccelerationStructureTypeKHR + +@cenum VkCopyAccelerationStructureModeKHR::UInt32 begin + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2 + VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3 + VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0 + VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1 + VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 2147483647 +end + +const VkCopyAccelerationStructureModeNV = VkCopyAccelerationStructureModeKHR + +@cenum VkAccelerationStructureMemoryRequirementsTypeKHR::UInt32 begin + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2 + VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_KHR = 2147483647 +end + +const VkAccelerationStructureMemoryRequirementsTypeNV = VkAccelerationStructureMemoryRequirementsTypeKHR + +@cenum VkGeometryFlagBitsKHR::UInt32 begin + VK_GEOMETRY_OPAQUE_BIT_KHR = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 2 + VK_GEOMETRY_OPAQUE_BIT_NV = 1 + VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 2 + VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryFlagsKHR = VkFlags + +const VkGeometryFlagsNV = VkGeometryFlagsKHR + +const VkGeometryFlagBitsNV = VkGeometryFlagBitsKHR + +@cenum VkGeometryInstanceFlagBitsKHR::UInt32 begin + VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 8 + VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 1 + VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 2 + VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 4 + VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 8 + VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkGeometryInstanceFlagsKHR = VkFlags + +const VkGeometryInstanceFlagsNV = VkGeometryInstanceFlagsKHR + +const VkGeometryInstanceFlagBitsNV = VkGeometryInstanceFlagBitsKHR + +@cenum VkBuildAccelerationStructureFlagBitsKHR::UInt32 begin + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 16 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 1 + VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 2 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 4 + VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 8 + VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 16 + VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 2147483647 +end + +const VkBuildAccelerationStructureFlagsKHR = VkFlags + +const VkBuildAccelerationStructureFlagsNV = VkBuildAccelerationStructureFlagsKHR + +const VkBuildAccelerationStructureFlagBitsNV = VkBuildAccelerationStructureFlagBitsKHR + +struct VkRayTracingShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkRayTracingShaderGroupTypeKHR + generalShader::UInt32 + closestHitShader::UInt32 + anyHitShader::UInt32 + intersectionShader::UInt32 +end + +struct VkRayTracingPipelineCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCreateFlags + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + groupCount::UInt32 + pGroups::Ptr{VkRayTracingShaderGroupCreateInfoNV} + maxRecursionDepth::UInt32 + layout::VkPipelineLayout + basePipelineHandle::VkPipeline + basePipelineIndex::Int32 +end + +struct VkGeometryTrianglesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexData::VkBuffer + vertexOffset::VkDeviceSize + vertexCount::UInt32 + vertexStride::VkDeviceSize + vertexFormat::VkFormat + indexData::VkBuffer + indexOffset::VkDeviceSize + indexCount::UInt32 + indexType::VkIndexType + transformData::VkBuffer + transformOffset::VkDeviceSize +end + +struct VkGeometryAABBNV + sType::VkStructureType + pNext::Ptr{Cvoid} + aabbData::VkBuffer + numAABBs::UInt32 + stride::UInt32 + offset::VkDeviceSize +end + +struct VkGeometryDataNV + triangles::VkGeometryTrianglesNV + aabbs::VkGeometryAABBNV +end + +struct VkGeometryNV + sType::VkStructureType + pNext::Ptr{Cvoid} + geometryType::VkGeometryTypeKHR + geometry::VkGeometryDataNV + flags::VkGeometryFlagsKHR +end + +struct VkAccelerationStructureInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureTypeNV + flags::VkBuildAccelerationStructureFlagsNV + instanceCount::UInt32 + geometryCount::UInt32 + pGeometries::Ptr{VkGeometryNV} +end + +struct VkAccelerationStructureCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + compactedSize::VkDeviceSize + info::VkAccelerationStructureInfoNV +end + +struct VkBindAccelerationStructureMemoryInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructure::VkAccelerationStructureKHR + memory::VkDeviceMemory + memoryOffset::VkDeviceSize + deviceIndexCount::UInt32 + pDeviceIndices::Ptr{UInt32} +end + +const VkBindAccelerationStructureMemoryInfoNV = VkBindAccelerationStructureMemoryInfoKHR + +struct VkWriteDescriptorSetAccelerationStructureKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + accelerationStructureCount::UInt32 + pAccelerationStructures::Ptr{VkAccelerationStructureKHR} +end + +const VkWriteDescriptorSetAccelerationStructureNV = VkWriteDescriptorSetAccelerationStructureKHR + +struct VkAccelerationStructureMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkAccelerationStructureMemoryRequirementsTypeNV + accelerationStructure::VkAccelerationStructureNV +end + +struct VkPhysicalDeviceRayTracingPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderGroupHandleSize::UInt32 + maxRecursionDepth::UInt32 + maxShaderGroupStride::UInt32 + shaderGroupBaseAlignment::UInt32 + maxGeometryCount::UInt64 + maxInstanceCount::UInt64 + maxTriangleCount::UInt64 + maxDescriptorSetAccelerationStructures::UInt32 +end + +struct VkTransformMatrixKHR + matrix::NTuple{3, NTuple{4, Cfloat}} +end + +const VkTransformMatrixNV = VkTransformMatrixKHR + +struct VkAabbPositionsKHR + minX::Cfloat + minY::Cfloat + minZ::Cfloat + maxX::Cfloat + maxY::Cfloat + maxZ::Cfloat +end + +const VkAabbPositionsNV = VkAabbPositionsKHR + +struct VkAccelerationStructureInstanceKHR + data::NTuple{64, UInt8} +end + +function Base.getproperty(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol) + f === :transform && return Ptr{VkTransformMatrixKHR}(x + 0) + f === :instanceCustomIndex && return Ptr{UInt32}(x + 48) + f === :mask && return Ptr{UInt32}(x + 51) + f === :instanceShaderBindingTableRecordOffset && return Ptr{UInt32}(x + 52) + f === :flags && return Ptr{VkGeometryInstanceFlagsKHR}(x + 55) + f === :accelerationStructureReference && return Ptr{UInt64}(x + 56) + return getfield(x, f) +end + +function Base.getproperty(x::VkAccelerationStructureInstanceKHR, f::Symbol) + r = Ref{VkAccelerationStructureInstanceKHR}(x) + ptr = Base.unsafe_convert(Ptr{VkAccelerationStructureInstanceKHR}, r) + fptr = getproperty(ptr, f) + begin + if fptr isa Ptr + return GC.@preserve(r, unsafe_load(fptr)) + else + (baseptr, offset, width) = fptr + ty = eltype(baseptr) + i8 = GC.@preserve(r, unsafe_load(baseptr)) + bitstr = bitstring(i8) + sig = bitstr[(end - offset) - (width - 1):end - offset] + zexted = lpad(sig, 8 * sizeof(ty), '0') + return parse(ty, zexted; base = 2) + end + end +end + +function Base.setproperty!(x::Ptr{VkAccelerationStructureInstanceKHR}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +const VkAccelerationStructureInstanceNV = VkAccelerationStructureInstanceKHR + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateAccelerationStructureNV ) ( VkDevice device , const VkAccelerationStructureCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkAccelerationStructureNV * pAccelerationStructure ) +const PFN_vkCreateAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureKHR ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyAccelerationStructureNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetAccelerationStructureMemoryRequirementsNV ) ( VkDevice device , const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2KHR * pMemoryRequirements ) +const PFN_vkGetAccelerationStructureMemoryRequirementsNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryKHR ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkBindAccelerationStructureMemoryNV ) ( VkDevice device , uint32_t bindInfoCount , const VkBindAccelerationStructureMemoryInfoKHR * pBindInfos ) +const PFN_vkBindAccelerationStructureMemoryNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBuildAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , const VkAccelerationStructureInfoNV * pInfo , VkBuffer instanceData , VkDeviceSize instanceOffset , VkBool32 update , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkBuffer scratch , VkDeviceSize scratchOffset ) +const PFN_vkCmdBuildAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdCopyAccelerationStructureNV ) ( VkCommandBuffer commandBuffer , VkAccelerationStructureKHR dst , VkAccelerationStructureKHR src , VkCopyAccelerationStructureModeKHR mode ) +const PFN_vkCmdCopyAccelerationStructureNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdTraceRaysNV ) ( VkCommandBuffer commandBuffer , VkBuffer raygenShaderBindingTableBuffer , VkDeviceSize raygenShaderBindingOffset , VkBuffer missShaderBindingTableBuffer , VkDeviceSize missShaderBindingOffset , VkDeviceSize missShaderBindingStride , VkBuffer hitShaderBindingTableBuffer , VkDeviceSize hitShaderBindingOffset , VkDeviceSize hitShaderBindingStride , VkBuffer callableShaderBindingTableBuffer , VkDeviceSize callableShaderBindingOffset , VkDeviceSize callableShaderBindingStride , uint32_t width , uint32_t height , uint32_t depth ) +const PFN_vkCmdTraceRaysNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateRayTracingPipelinesNV ) ( VkDevice device , VkPipelineCache pipelineCache , uint32_t createInfoCount , const VkRayTracingPipelineCreateInfoNV * pCreateInfos , const VkAllocationCallbacks * pAllocator , VkPipeline * pPipelines ) +const PFN_vkCreateRayTracingPipelinesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesKHR ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetRayTracingShaderGroupHandlesNV ) ( VkDevice device , VkPipeline pipeline , uint32_t firstGroup , uint32_t groupCount , size_t dataSize , void * pData ) +const PFN_vkGetRayTracingShaderGroupHandlesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetAccelerationStructureHandleNV ) ( VkDevice device , VkAccelerationStructureKHR accelerationStructure , size_t dataSize , void * pData ) +const PFN_vkGetAccelerationStructureHandleNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesKHR ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesKHR = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteAccelerationStructuresPropertiesNV ) ( VkCommandBuffer commandBuffer , uint32_t accelerationStructureCount , const VkAccelerationStructureKHR * pAccelerationStructures , VkQueryType queryType , VkQueryPool queryPool , uint32_t firstQuery ) +const PFN_vkCmdWriteAccelerationStructuresPropertiesNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCompileDeferredNV ) ( VkDevice device , VkPipeline pipeline , uint32_t shader ) +const PFN_vkCompileDeferredNV = Ptr{Cvoid} + +function vkCreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure) + ccall((:vkCreateAccelerationStructureNV, libvulkan), VkResult, (VkDevice, Ptr{VkAccelerationStructureCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkAccelerationStructureNV}), device, pCreateInfo, pAllocator, pAccelerationStructure) +end + +function vkDestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureKHR, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkDestroyAccelerationStructureNV(device, accelerationStructure, pAllocator) + ccall((:vkDestroyAccelerationStructureNV, libvulkan), Cvoid, (VkDevice, VkAccelerationStructureKHR, Ptr{VkAllocationCallbacks}), device, accelerationStructure, pAllocator) +end + +function vkGetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetAccelerationStructureMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkAccelerationStructureMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2KHR}), device, pInfo, pMemoryRequirements) +end + +function vkBindAccelerationStructureMemoryKHR(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryKHR, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkBindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos) + ccall((:vkBindAccelerationStructureMemoryNV, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkBindAccelerationStructureMemoryInfoKHR}), device, bindInfoCount, pBindInfos) +end + +function vkCmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) + ccall((:vkCmdBuildAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkAccelerationStructureInfoNV}, VkBuffer, VkDeviceSize, VkBool32, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkBuffer, VkDeviceSize), commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset) +end + +function vkCmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode) + ccall((:vkCmdCopyAccelerationStructureNV, libvulkan), Cvoid, (VkCommandBuffer, VkAccelerationStructureKHR, VkAccelerationStructureKHR, VkCopyAccelerationStructureModeKHR), commandBuffer, dst, src, mode) +end + +function vkCmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) + ccall((:vkCmdTraceRaysNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, UInt32, UInt32, UInt32), commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth) +end + +function vkCreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) + ccall((:vkCreateRayTracingPipelinesNV, libvulkan), VkResult, (VkDevice, VkPipelineCache, UInt32, Ptr{VkRayTracingPipelineCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkPipeline}), device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) +end + +function vkGetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesKHR, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData) + ccall((:vkGetRayTracingShaderGroupHandlesNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32, UInt32, Csize_t, Ptr{Cvoid}), device, pipeline, firstGroup, groupCount, dataSize, pData) +end + +function vkGetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData) + ccall((:vkGetAccelerationStructureHandleNV, libvulkan), VkResult, (VkDevice, VkAccelerationStructureKHR, Csize_t, Ptr{Cvoid}), device, accelerationStructure, dataSize, pData) +end + +function vkCmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesKHR, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) + ccall((:vkCmdWriteAccelerationStructuresPropertiesNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkAccelerationStructureKHR}, VkQueryType, VkQueryPool, UInt32), commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery) +end + +function vkCompileDeferredNV(device, pipeline, shader) + ccall((:vkCompileDeferredNV, libvulkan), VkResult, (VkDevice, VkPipeline, UInt32), device, pipeline, shader) +end + +struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTest::VkBool32 +end + +struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + representativeFragmentTestEnable::VkBool32 +end + +struct VkPhysicalDeviceImageViewImageFormatInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + imageViewType::VkImageViewType +end + +struct VkFilterCubicImageViewImageFormatPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + filterCubic::VkBool32 + filterCubicMinmax::VkBool32 +end + +@cenum VkQueueGlobalPriorityEXT::UInt32 begin + 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_MAX_ENUM_EXT = 2147483647 +end + +struct VkDeviceQueueGlobalPriorityCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + globalPriority::VkQueueGlobalPriorityEXT +end + +struct VkImportMemoryHostPointerInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + pHostPointer::Ptr{Cvoid} +end + +struct VkMemoryHostPointerPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minImportedHostPointerAlignment::VkDeviceSize +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryHostPointerPropertiesEXT ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , const void * pHostPointer , VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties ) +const PFN_vkGetMemoryHostPointerPropertiesEXT = Ptr{Cvoid} + +function vkGetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties) + ccall((:vkGetMemoryHostPointerPropertiesEXT, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, Ptr{Cvoid}, Ptr{VkMemoryHostPointerPropertiesEXT}), device, handleType, pHostPointer, pMemoryHostPointerProperties) +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdWriteBufferMarkerAMD ) ( VkCommandBuffer commandBuffer , VkPipelineStageFlagBits pipelineStage , VkBuffer dstBuffer , VkDeviceSize dstOffset , uint32_t marker ) +const PFN_vkCmdWriteBufferMarkerAMD = Ptr{Cvoid} + +function vkCmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) + ccall((:vkCmdWriteBufferMarkerAMD, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineStageFlagBits, VkBuffer, VkDeviceSize, UInt32), commandBuffer, pipelineStage, dstBuffer, dstOffset, marker) +end + +@cenum VkPipelineCompilerControlFlagBitsAMD::UInt32 begin + VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkPipelineCompilerControlFlagsAMD = VkFlags + +struct VkPipelineCompilerControlCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + compilerControlFlags::VkPipelineCompilerControlFlagsAMD +end + +@cenum VkTimeDomainEXT::UInt32 begin + VK_TIME_DOMAIN_DEVICE_EXT = 0 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1 + VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2 + VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3 + VK_TIME_DOMAIN_MAX_ENUM_EXT = 2147483647 +end + +struct VkCalibratedTimestampInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + timeDomain::VkTimeDomainEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pTimeDomainCount , VkTimeDomainEXT * pTimeDomains ) +const PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetCalibratedTimestampsEXT ) ( VkDevice device , uint32_t timestampCount , const VkCalibratedTimestampInfoEXT * pTimestampInfos , uint64_t * pTimestamps , uint64_t * pMaxDeviation ) +const PFN_vkGetCalibratedTimestampsEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(physicalDevice, pTimeDomainCount, pTimeDomains) + ccall((:vkGetPhysicalDeviceCalibrateableTimeDomainsEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkTimeDomainEXT}), physicalDevice, pTimeDomainCount, pTimeDomains) +end + +function vkGetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) + ccall((:vkGetCalibratedTimestampsEXT, libvulkan), VkResult, (VkDevice, UInt32, Ptr{VkCalibratedTimestampInfoEXT}, Ptr{UInt64}, Ptr{UInt64}), device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation) +end + +struct VkPhysicalDeviceShaderCorePropertiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderEngineCount::UInt32 + shaderArraysPerEngineCount::UInt32 + computeUnitsPerShaderArray::UInt32 + simdPerComputeUnit::UInt32 + wavefrontsPerSimd::UInt32 + wavefrontSize::UInt32 + sgprsPerSimd::UInt32 + minSgprAllocation::UInt32 + maxSgprAllocation::UInt32 + sgprAllocationGranularity::UInt32 + vgprsPerSimd::UInt32 + minVgprAllocation::UInt32 + maxVgprAllocation::UInt32 + vgprAllocationGranularity::UInt32 +end + +@cenum VkMemoryOverallocationBehaviorAMD::UInt32 begin + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2 + VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 2147483647 +end + +struct VkDeviceMemoryOverallocationCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + overallocationBehavior::VkMemoryOverallocationBehaviorAMD +end + +struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxVertexAttribDivisor::UInt32 +end + +struct VkVertexInputBindingDivisorDescriptionEXT + binding::UInt32 + divisor::UInt32 +end + +struct VkPipelineVertexInputDivisorStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexBindingDivisorCount::UInt32 + pVertexBindingDivisors::Ptr{VkVertexInputBindingDivisorDescriptionEXT} +end + +struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + vertexAttributeInstanceRateDivisor::VkBool32 + vertexAttributeInstanceRateZeroDivisor::VkBool32 +end + +@cenum VkPipelineCreationFeedbackFlagBitsEXT::UInt32 begin + VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 1 + VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 2 + VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 4 + VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPipelineCreationFeedbackFlagsEXT = VkFlags + +struct VkPipelineCreationFeedbackEXT + flags::VkPipelineCreationFeedbackFlagsEXT + duration::UInt64 +end + +struct VkPipelineCreationFeedbackCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pPipelineCreationFeedback::Ptr{VkPipelineCreationFeedbackEXT} + pipelineStageCreationFeedbackCount::UInt32 + pPipelineStageCreationFeedbacks::Ptr{VkPipelineCreationFeedbackEXT} +end + +struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + computeDerivativeGroupQuads::VkBool32 + computeDerivativeGroupLinear::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + taskShader::VkBool32 + meshShader::VkBool32 +end + +struct VkPhysicalDeviceMeshShaderPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxDrawMeshTasksCount::UInt32 + maxTaskWorkGroupInvocations::UInt32 + maxTaskWorkGroupSize::NTuple{3, UInt32} + maxTaskTotalMemorySize::UInt32 + maxTaskOutputCount::UInt32 + maxMeshWorkGroupInvocations::UInt32 + maxMeshWorkGroupSize::NTuple{3, UInt32} + maxMeshTotalMemorySize::UInt32 + maxMeshOutputVertices::UInt32 + maxMeshOutputPrimitives::UInt32 + maxMeshMultiviewViewCount::UInt32 + meshOutputPerVertexGranularity::UInt32 + meshOutputPerPrimitiveGranularity::UInt32 +end + +struct VkDrawMeshTasksIndirectCommandNV + taskCount::UInt32 + firstTask::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksNV ) ( VkCommandBuffer commandBuffer , uint32_t taskCount , uint32_t firstTask ) +const PFN_vkCmdDrawMeshTasksNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , uint32_t drawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdDrawMeshTasksIndirectCountNV ) ( VkCommandBuffer commandBuffer , VkBuffer buffer , VkDeviceSize offset , VkBuffer countBuffer , VkDeviceSize countBufferOffset , uint32_t maxDrawCount , uint32_t stride ) +const PFN_vkCmdDrawMeshTasksIndirectCountNV = Ptr{Cvoid} + +function vkCmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask) + ccall((:vkCmdDrawMeshTasksNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32), commandBuffer, taskCount, firstTask) +end + +function vkCmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, drawCount, stride) +end + +function vkCmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) + ccall((:vkCmdDrawMeshTasksIndirectCountNV, libvulkan), Cvoid, (VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, UInt32, UInt32), commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride) +end + +struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderBarycentric::VkBool32 +end + +struct VkPhysicalDeviceShaderImageFootprintFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + imageFootprint::VkBool32 +end + +struct VkPipelineViewportExclusiveScissorStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissorCount::UInt32 + pExclusiveScissors::Ptr{VkRect2D} +end + +struct VkPhysicalDeviceExclusiveScissorFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + exclusiveScissor::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetExclusiveScissorNV ) ( VkCommandBuffer commandBuffer , uint32_t firstExclusiveScissor , uint32_t exclusiveScissorCount , const VkRect2D * pExclusiveScissors ) +const PFN_vkCmdSetExclusiveScissorNV = Ptr{Cvoid} + +function vkCmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) + ccall((:vkCmdSetExclusiveScissorNV, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkRect2D}), commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors) +end + +struct VkQueueFamilyCheckpointPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + checkpointExecutionStageMask::VkPipelineStageFlags +end + +struct VkCheckpointDataNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stage::VkPipelineStageFlagBits + pCheckpointMarker::Ptr{Cvoid} +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCheckpointNV ) ( VkCommandBuffer commandBuffer , const void * pCheckpointMarker ) +const PFN_vkCmdSetCheckpointNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetQueueCheckpointDataNV ) ( VkQueue queue , uint32_t * pCheckpointDataCount , VkCheckpointDataNV * pCheckpointData ) +const PFN_vkGetQueueCheckpointDataNV = Ptr{Cvoid} + +function vkCmdSetCheckpointNV(commandBuffer, pCheckpointMarker) + ccall((:vkCmdSetCheckpointNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{Cvoid}), commandBuffer, pCheckpointMarker) +end + +function vkGetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData) + ccall((:vkGetQueueCheckpointDataNV, libvulkan), Cvoid, (VkQueue, Ptr{UInt32}, Ptr{VkCheckpointDataNV}), queue, pCheckpointDataCount, pCheckpointData) +end + +struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderIntegerFunctions2::VkBool32 +end + +const VkPerformanceConfigurationINTEL_T = Cvoid + +const VkPerformanceConfigurationINTEL = Ptr{VkPerformanceConfigurationINTEL_T} + +@cenum VkPerformanceConfigurationTypeINTEL::UInt32 begin + VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0 + VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkQueryPoolSamplingModeINTEL::UInt32 begin + VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0 + VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceOverrideTypeINTEL::UInt32 begin + VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0 + VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1 + VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceParameterTypeINTEL::UInt32 begin + VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0 + VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1 + VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +@cenum VkPerformanceValueTypeINTEL::UInt32 begin + VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0 + VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1 + VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2 + VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3 + VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4 + VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 2147483647 +end + +struct VkPerformanceValueDataINTEL + data::NTuple{8, UInt8} +end + +function Base.getproperty(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol) + f === :value32 && return Ptr{UInt32}(x + 0) + f === :value64 && return Ptr{UInt64}(x + 0) + f === :valueFloat && return Ptr{Cfloat}(x + 0) + f === :valueBool && return Ptr{VkBool32}(x + 0) + f === :valueString && return Ptr{Ptr{Cchar}}(x + 0) + return getfield(x, f) +end + +function Base.getproperty(x::VkPerformanceValueDataINTEL, f::Symbol) + r = Ref{VkPerformanceValueDataINTEL}(x) + ptr = Base.unsafe_convert(Ptr{VkPerformanceValueDataINTEL}, r) + fptr = getproperty(ptr, f) + GC.@preserve r unsafe_load(fptr) +end + +function Base.setproperty!(x::Ptr{VkPerformanceValueDataINTEL}, f::Symbol, v) + unsafe_store!(getproperty(x, f), v) +end + +struct VkPerformanceValueINTEL + type::VkPerformanceValueTypeINTEL + data::VkPerformanceValueDataINTEL +end + +struct VkInitializePerformanceApiInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + pUserData::Ptr{Cvoid} +end + +struct VkQueryPoolPerformanceQueryCreateInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + performanceCountersSampling::VkQueryPoolSamplingModeINTEL +end + +const VkQueryPoolCreateInfoINTEL = VkQueryPoolPerformanceQueryCreateInfoINTEL + +struct VkPerformanceMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt64 +end + +struct VkPerformanceStreamMarkerInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + marker::UInt32 +end + +struct VkPerformanceOverrideInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceOverrideTypeINTEL + enable::VkBool32 + parameter::UInt64 +end + +struct VkPerformanceConfigurationAcquireInfoINTEL + sType::VkStructureType + pNext::Ptr{Cvoid} + type::VkPerformanceConfigurationTypeINTEL +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkInitializePerformanceApiINTEL ) ( VkDevice device , const VkInitializePerformanceApiInfoINTEL * pInitializeInfo ) +const PFN_vkInitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkUninitializePerformanceApiINTEL ) ( VkDevice device ) +const PFN_vkUninitializePerformanceApiINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceStreamMarkerINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo ) +const PFN_vkCmdSetPerformanceStreamMarkerINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCmdSetPerformanceOverrideINTEL ) ( VkCommandBuffer commandBuffer , const VkPerformanceOverrideInfoINTEL * pOverrideInfo ) +const PFN_vkCmdSetPerformanceOverrideINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquirePerformanceConfigurationINTEL ) ( VkDevice device , const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo , VkPerformanceConfigurationINTEL * pConfiguration ) +const PFN_vkAcquirePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleasePerformanceConfigurationINTEL ) ( VkDevice device , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkReleasePerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkQueueSetPerformanceConfigurationINTEL ) ( VkQueue queue , VkPerformanceConfigurationINTEL configuration ) +const PFN_vkQueueSetPerformanceConfigurationINTEL = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPerformanceParameterINTEL ) ( VkDevice device , VkPerformanceParameterTypeINTEL parameter , VkPerformanceValueINTEL * pValue ) +const PFN_vkGetPerformanceParameterINTEL = Ptr{Cvoid} + +function vkInitializePerformanceApiINTEL(device, pInitializeInfo) + ccall((:vkInitializePerformanceApiINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkInitializePerformanceApiInfoINTEL}), device, pInitializeInfo) +end + +function vkUninitializePerformanceApiINTEL(device) + ccall((:vkUninitializePerformanceApiINTEL, libvulkan), Cvoid, (VkDevice,), device) +end + +function vkCmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo) + ccall((:vkCmdSetPerformanceStreamMarkerINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceStreamMarkerInfoINTEL}), commandBuffer, pMarkerInfo) +end + +function vkCmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo) + ccall((:vkCmdSetPerformanceOverrideINTEL, libvulkan), VkResult, (VkCommandBuffer, Ptr{VkPerformanceOverrideInfoINTEL}), commandBuffer, pOverrideInfo) +end + +function vkAcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration) + ccall((:vkAcquirePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, Ptr{VkPerformanceConfigurationAcquireInfoINTEL}, Ptr{VkPerformanceConfigurationINTEL}), device, pAcquireInfo, pConfiguration) +end + +function vkReleasePerformanceConfigurationINTEL(device, configuration) + ccall((:vkReleasePerformanceConfigurationINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceConfigurationINTEL), device, configuration) +end + +function vkQueueSetPerformanceConfigurationINTEL(queue, configuration) + ccall((:vkQueueSetPerformanceConfigurationINTEL, libvulkan), VkResult, (VkQueue, VkPerformanceConfigurationINTEL), queue, configuration) +end + +function vkGetPerformanceParameterINTEL(device, parameter, pValue) + ccall((:vkGetPerformanceParameterINTEL, libvulkan), VkResult, (VkDevice, VkPerformanceParameterTypeINTEL, Ptr{VkPerformanceValueINTEL}), device, parameter, pValue) +end + +struct VkPhysicalDevicePCIBusInfoPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pciDomain::UInt32 + pciBus::UInt32 + pciDevice::UInt32 + pciFunction::UInt32 +end + +struct VkDisplayNativeHdrSurfaceCapabilitiesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingSupport::VkBool32 +end + +struct VkSwapchainDisplayNativeHdrCreateInfoAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + localDimmingEnable::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkSetLocalDimmingAMD ) ( VkDevice device , VkSwapchainKHR swapChain , VkBool32 localDimmingEnable ) +const PFN_vkSetLocalDimmingAMD = Ptr{Cvoid} + +function vkSetLocalDimmingAMD(device, swapChain, localDimmingEnable) + ccall((:vkSetLocalDimmingAMD, libvulkan), Cvoid, (VkDevice, VkSwapchainKHR, VkBool32), device, swapChain, localDimmingEnable) +end + +struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMap::VkBool32 + fragmentDensityMapDynamic::VkBool32 + fragmentDensityMapNonSubsampledImages::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minFragmentDensityTexelSize::VkExtent2D + maxFragmentDensityTexelSize::VkExtent2D + fragmentDensityInvocations::VkBool32 +end + +struct VkRenderPassFragmentDensityMapCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapAttachment::VkAttachmentReference +end + +const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = VkPhysicalDeviceScalarBlockLayoutFeatures + +struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subgroupSizeControl::VkBool32 + computeFullSubgroups::VkBool32 +end + +struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + minSubgroupSize::UInt32 + maxSubgroupSize::UInt32 + maxComputeWorkgroupSubgroups::UInt32 + requiredSubgroupSizeStages::VkShaderStageFlags +end + +struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + requiredSubgroupSize::UInt32 +end + +@cenum VkShaderCorePropertiesFlagBitsAMD::UInt32 begin + VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 2147483647 +end + +const VkShaderCorePropertiesFlagsAMD = VkFlags + +struct VkPhysicalDeviceShaderCoreProperties2AMD + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderCoreFeatures::VkShaderCorePropertiesFlagsAMD + activeComputeUnitCount::UInt32 +end + +struct VkPhysicalDeviceCoherentMemoryFeaturesAMD + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceCoherentMemory::VkBool32 +end + +struct VkPhysicalDeviceMemoryBudgetPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + heapBudget::NTuple{16, VkDeviceSize} + heapUsage::NTuple{16, VkDeviceSize} +end + +struct VkPhysicalDeviceMemoryPriorityFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryPriority::VkBool32 +end + +struct VkMemoryPriorityAllocateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + priority::Cfloat +end + +struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + dedicatedAllocationImageAliasing::VkBool32 +end + +struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + bufferDeviceAddress::VkBool32 + bufferDeviceAddressCaptureReplay::VkBool32 + bufferDeviceAddressMultiDevice::VkBool32 +end + +const VkPhysicalDeviceBufferAddressFeaturesEXT = VkPhysicalDeviceBufferDeviceAddressFeaturesEXT + +const VkBufferDeviceAddressInfoEXT = VkBufferDeviceAddressInfo + +struct VkBufferDeviceAddressCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceAddress::VkDeviceAddress +end + +# typedef VkDeviceAddress ( VKAPI_PTR * PFN_vkGetBufferDeviceAddressEXT ) ( VkDevice device , const VkBufferDeviceAddressInfo * pInfo ) +const PFN_vkGetBufferDeviceAddressEXT = Ptr{Cvoid} + +function vkGetBufferDeviceAddressEXT(device, pInfo) + ccall((:vkGetBufferDeviceAddressEXT, libvulkan), VkDeviceAddress, (VkDevice, Ptr{VkBufferDeviceAddressInfo}), device, pInfo) +end + +@cenum VkToolPurposeFlagBitsEXT::UInt32 begin + VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 1 + VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 2 + VK_TOOL_PURPOSE_TRACING_BIT_EXT = 4 + VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 8 + VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 16 + VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 32 + VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 64 + VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkToolPurposeFlagsEXT = VkFlags + +struct VkPhysicalDeviceToolPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + name::NTuple{256, Cchar} + version::NTuple{256, Cchar} + purposes::VkToolPurposeFlagsEXT + description::NTuple{256, Cchar} + layer::NTuple{256, Cchar} +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceToolPropertiesEXT ) ( VkPhysicalDevice physicalDevice , uint32_t * pToolCount , VkPhysicalDeviceToolPropertiesEXT * pToolProperties ) +const PFN_vkGetPhysicalDeviceToolPropertiesEXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, pToolCount, pToolProperties) + ccall((:vkGetPhysicalDeviceToolPropertiesEXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkPhysicalDeviceToolPropertiesEXT}), physicalDevice, pToolCount, pToolProperties) +end + +const VkImageStencilUsageCreateInfoEXT = VkImageStencilUsageCreateInfo + +@cenum VkValidationFeatureEnableEXT::UInt32 begin + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0 + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1 + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2 + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3 + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4 + VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 2147483647 +end + +@cenum VkValidationFeatureDisableEXT::UInt32 begin + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0 + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1 + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2 + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3 + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4 + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5 + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6 + VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 2147483647 +end + +struct VkValidationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + enabledValidationFeatureCount::UInt32 + pEnabledValidationFeatures::Ptr{VkValidationFeatureEnableEXT} + disabledValidationFeatureCount::UInt32 + pDisabledValidationFeatures::Ptr{VkValidationFeatureDisableEXT} +end + +@cenum VkComponentTypeNV::UInt32 begin + VK_COMPONENT_TYPE_FLOAT16_NV = 0 + VK_COMPONENT_TYPE_FLOAT32_NV = 1 + VK_COMPONENT_TYPE_FLOAT64_NV = 2 + VK_COMPONENT_TYPE_SINT8_NV = 3 + VK_COMPONENT_TYPE_SINT16_NV = 4 + VK_COMPONENT_TYPE_SINT32_NV = 5 + VK_COMPONENT_TYPE_SINT64_NV = 6 + VK_COMPONENT_TYPE_UINT8_NV = 7 + VK_COMPONENT_TYPE_UINT16_NV = 8 + VK_COMPONENT_TYPE_UINT32_NV = 9 + VK_COMPONENT_TYPE_UINT64_NV = 10 + VK_COMPONENT_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkScopeNV::UInt32 begin + VK_SCOPE_DEVICE_NV = 1 + VK_SCOPE_WORKGROUP_NV = 2 + VK_SCOPE_SUBGROUP_NV = 3 + VK_SCOPE_QUEUE_FAMILY_NV = 5 + VK_SCOPE_MAX_ENUM_NV = 2147483647 +end + +struct VkCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + MSize::UInt32 + NSize::UInt32 + KSize::UInt32 + AType::VkComponentTypeNV + BType::VkComponentTypeNV + CType::VkComponentTypeNV + DType::VkComponentTypeNV + scope::VkScopeNV +end + +struct VkPhysicalDeviceCooperativeMatrixFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrix::VkBool32 + cooperativeMatrixRobustBufferAccess::VkBool32 +end + +struct VkPhysicalDeviceCooperativeMatrixPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + cooperativeMatrixSupportedStages::VkShaderStageFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pPropertyCount , VkCooperativeMatrixPropertiesNV * pProperties ) +const PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(physicalDevice, pPropertyCount, pProperties) + ccall((:vkGetPhysicalDeviceCooperativeMatrixPropertiesNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkCooperativeMatrixPropertiesNV}), physicalDevice, pPropertyCount, pProperties) +end + +@cenum VkCoverageReductionModeNV::UInt32 begin + VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0 + VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1 + VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 2147483647 +end + +const VkPipelineCoverageReductionStateCreateFlagsNV = VkFlags + +struct VkPhysicalDeviceCoverageReductionModeFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkBool32 +end + +struct VkPipelineCoverageReductionStateCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPipelineCoverageReductionStateCreateFlagsNV + coverageReductionMode::VkCoverageReductionModeNV +end + +struct VkFramebufferMixedSamplesCombinationNV + sType::VkStructureType + pNext::Ptr{Cvoid} + coverageReductionMode::VkCoverageReductionModeNV + rasterizationSamples::VkSampleCountFlagBits + depthStencilSamples::VkSampleCountFlags + colorSamples::VkSampleCountFlags +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV ) ( VkPhysicalDevice physicalDevice , uint32_t * pCombinationCount , VkFramebufferMixedSamplesCombinationNV * pCombinations ) +const PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = Ptr{Cvoid} + +function vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(physicalDevice, pCombinationCount, pCombinations) + ccall((:vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, libvulkan), VkResult, (VkPhysicalDevice, Ptr{UInt32}, Ptr{VkFramebufferMixedSamplesCombinationNV}), physicalDevice, pCombinationCount, pCombinations) +end + +struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentShaderSampleInterlock::VkBool32 + fragmentShaderPixelInterlock::VkBool32 + fragmentShaderShadingRateInterlock::VkBool32 +end + +struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + ycbcrImageArrays::VkBool32 +end + +const VkHeadlessSurfaceCreateFlagsEXT = VkFlags + +struct VkHeadlessSurfaceCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkHeadlessSurfaceCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateHeadlessSurfaceEXT ) ( VkInstance instance , const VkHeadlessSurfaceCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateHeadlessSurfaceEXT = Ptr{Cvoid} + +function vkCreateHeadlessSurfaceEXT(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateHeadlessSurfaceEXT, libvulkan), VkResult, (VkInstance, Ptr{VkHeadlessSurfaceCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +@cenum VkLineRasterizationModeEXT::UInt32 begin + VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1 + VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2 + VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3 + VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 2147483647 +end + +struct VkPhysicalDeviceLineRasterizationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + rectangularLines::VkBool32 + bresenhamLines::VkBool32 + smoothLines::VkBool32 + stippledRectangularLines::VkBool32 + stippledBresenhamLines::VkBool32 + stippledSmoothLines::VkBool32 +end + +struct VkPhysicalDeviceLineRasterizationPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineSubPixelPrecisionBits::UInt32 +end + +struct VkPipelineRasterizationLineStateCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + lineRasterizationMode::VkLineRasterizationModeEXT + stippledLineEnable::VkBool32 + lineStippleFactor::UInt32 + lineStipplePattern::UInt16 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetLineStippleEXT ) ( VkCommandBuffer commandBuffer , uint32_t lineStippleFactor , uint16_t lineStipplePattern ) +const PFN_vkCmdSetLineStippleEXT = Ptr{Cvoid} + +function vkCmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern) + ccall((:vkCmdSetLineStippleEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt16), commandBuffer, lineStippleFactor, lineStipplePattern) +end + +struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderBufferFloat32Atomics::VkBool32 + shaderBufferFloat32AtomicAdd::VkBool32 + shaderBufferFloat64Atomics::VkBool32 + shaderBufferFloat64AtomicAdd::VkBool32 + shaderSharedFloat32Atomics::VkBool32 + shaderSharedFloat32AtomicAdd::VkBool32 + shaderSharedFloat64Atomics::VkBool32 + shaderSharedFloat64AtomicAdd::VkBool32 + shaderImageFloat32Atomics::VkBool32 + shaderImageFloat32AtomicAdd::VkBool32 + sparseImageFloat32Atomics::VkBool32 + sparseImageFloat32AtomicAdd::VkBool32 +end + +const VkPhysicalDeviceHostQueryResetFeaturesEXT = VkPhysicalDeviceHostQueryResetFeatures + +# typedef void ( VKAPI_PTR * PFN_vkResetQueryPoolEXT ) ( VkDevice device , VkQueryPool queryPool , uint32_t firstQuery , uint32_t queryCount ) +const PFN_vkResetQueryPoolEXT = Ptr{Cvoid} + +function vkResetQueryPoolEXT(device, queryPool, firstQuery, queryCount) + ccall((:vkResetQueryPoolEXT, libvulkan), Cvoid, (VkDevice, VkQueryPool, UInt32, UInt32), device, queryPool, firstQuery, queryCount) +end + +struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + indexTypeUint8::VkBool32 +end + +struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + extendedDynamicState::VkBool32 +end + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetCullModeEXT ) ( VkCommandBuffer commandBuffer , VkCullModeFlags cullMode ) +const PFN_vkCmdSetCullModeEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetFrontFaceEXT ) ( VkCommandBuffer commandBuffer , VkFrontFace frontFace ) +const PFN_vkCmdSetFrontFaceEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetPrimitiveTopologyEXT ) ( VkCommandBuffer commandBuffer , VkPrimitiveTopology primitiveTopology ) +const PFN_vkCmdSetPrimitiveTopologyEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetViewportWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t viewportCount , const VkViewport * pViewports ) +const PFN_vkCmdSetViewportWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetScissorWithCountEXT ) ( VkCommandBuffer commandBuffer , uint32_t scissorCount , const VkRect2D * pScissors ) +const PFN_vkCmdSetScissorWithCountEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindVertexBuffers2EXT ) ( VkCommandBuffer commandBuffer , uint32_t firstBinding , uint32_t bindingCount , const VkBuffer * pBuffers , const VkDeviceSize * pOffsets , const VkDeviceSize * pSizes , const VkDeviceSize * pStrides ) +const PFN_vkCmdBindVertexBuffers2EXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthTestEnable ) +const PFN_vkCmdSetDepthTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthWriteEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthWriteEnable ) +const PFN_vkCmdSetDepthWriteEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthCompareOpEXT ) ( VkCommandBuffer commandBuffer , VkCompareOp depthCompareOp ) +const PFN_vkCmdSetDepthCompareOpEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetDepthBoundsTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 depthBoundsTestEnable ) +const PFN_vkCmdSetDepthBoundsTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilTestEnableEXT ) ( VkCommandBuffer commandBuffer , VkBool32 stencilTestEnable ) +const PFN_vkCmdSetStencilTestEnableEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdSetStencilOpEXT ) ( VkCommandBuffer commandBuffer , VkStencilFaceFlags faceMask , VkStencilOp failOp , VkStencilOp passOp , VkStencilOp depthFailOp , VkCompareOp compareOp ) +const PFN_vkCmdSetStencilOpEXT = Ptr{Cvoid} + +function vkCmdSetCullModeEXT(commandBuffer, cullMode) + ccall((:vkCmdSetCullModeEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCullModeFlags), commandBuffer, cullMode) +end + +function vkCmdSetFrontFaceEXT(commandBuffer, frontFace) + ccall((:vkCmdSetFrontFaceEXT, libvulkan), Cvoid, (VkCommandBuffer, VkFrontFace), commandBuffer, frontFace) +end + +function vkCmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology) + ccall((:vkCmdSetPrimitiveTopologyEXT, libvulkan), Cvoid, (VkCommandBuffer, VkPrimitiveTopology), commandBuffer, primitiveTopology) +end + +function vkCmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports) + ccall((:vkCmdSetViewportWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkViewport}), commandBuffer, viewportCount, pViewports) +end + +function vkCmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors) + ccall((:vkCmdSetScissorWithCountEXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, Ptr{VkRect2D}), commandBuffer, scissorCount, pScissors) +end + +function vkCmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) + ccall((:vkCmdBindVertexBuffers2EXT, libvulkan), Cvoid, (VkCommandBuffer, UInt32, UInt32, Ptr{VkBuffer}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}, Ptr{VkDeviceSize}), commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides) +end + +function vkCmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable) + ccall((:vkCmdSetDepthTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthTestEnable) +end + +function vkCmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable) + ccall((:vkCmdSetDepthWriteEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthWriteEnable) +end + +function vkCmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp) + ccall((:vkCmdSetDepthCompareOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkCompareOp), commandBuffer, depthCompareOp) +end + +function vkCmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable) + ccall((:vkCmdSetDepthBoundsTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, depthBoundsTestEnable) +end + +function vkCmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable) + ccall((:vkCmdSetStencilTestEnableEXT, libvulkan), Cvoid, (VkCommandBuffer, VkBool32), commandBuffer, stencilTestEnable) +end + +function vkCmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) + ccall((:vkCmdSetStencilOpEXT, libvulkan), Cvoid, (VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp), commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp) +end + +struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + shaderDemoteToHelperInvocation::VkBool32 +end + +const VkIndirectCommandsLayoutNV_T = Cvoid + +const VkIndirectCommandsLayoutNV = Ptr{VkIndirectCommandsLayoutNV_T} + +@cenum VkIndirectCommandsTokenTypeNV::UInt32 begin + VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7 + VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 2147483647 +end + +@cenum VkIndirectStateFlagBitsNV::UInt32 begin + VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 1 + VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectStateFlagsNV = VkFlags + +@cenum VkIndirectCommandsLayoutUsageFlagBitsNV::UInt32 begin + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 1 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 2 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 4 + VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkIndirectCommandsLayoutUsageFlagsNV = VkFlags + +struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + maxGraphicsShaderGroupCount::UInt32 + maxIndirectSequenceCount::UInt32 + maxIndirectCommandsTokenCount::UInt32 + maxIndirectCommandsStreamCount::UInt32 + maxIndirectCommandsTokenOffset::UInt32 + maxIndirectCommandsStreamStride::UInt32 + minSequencesCountBufferOffsetAlignment::UInt32 + minSequencesIndexBufferOffsetAlignment::UInt32 + minIndirectCommandsBufferOffsetAlignment::UInt32 +end + +struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + deviceGeneratedCommands::VkBool32 +end + +struct VkGraphicsShaderGroupCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + stageCount::UInt32 + pStages::Ptr{VkPipelineShaderStageCreateInfo} + pVertexInputState::Ptr{VkPipelineVertexInputStateCreateInfo} + pTessellationState::Ptr{VkPipelineTessellationStateCreateInfo} +end + +struct VkGraphicsPipelineShaderGroupsCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + groupCount::UInt32 + pGroups::Ptr{VkGraphicsShaderGroupCreateInfoNV} + pipelineCount::UInt32 + pPipelines::Ptr{VkPipeline} +end + +struct VkBindShaderGroupIndirectCommandNV + groupIndex::UInt32 +end + +struct VkBindIndexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + indexType::VkIndexType +end + +struct VkBindVertexBufferIndirectCommandNV + bufferAddress::VkDeviceAddress + size::UInt32 + stride::UInt32 +end + +struct VkSetStateFlagsIndirectCommandNV + data::UInt32 +end + +struct VkIndirectCommandsStreamNV + buffer::VkBuffer + offset::VkDeviceSize +end + +struct VkIndirectCommandsLayoutTokenNV + sType::VkStructureType + pNext::Ptr{Cvoid} + tokenType::VkIndirectCommandsTokenTypeNV + stream::UInt32 + offset::UInt32 + vertexBindingUnit::UInt32 + vertexDynamicStride::VkBool32 + pushconstantPipelineLayout::VkPipelineLayout + pushconstantShaderStageFlags::VkShaderStageFlags + pushconstantOffset::UInt32 + pushconstantSize::UInt32 + indirectStateFlags::VkIndirectStateFlagsNV + indexTypeCount::UInt32 + pIndexTypes::Ptr{VkIndexType} + pIndexTypeValues::Ptr{UInt32} +end + +struct VkIndirectCommandsLayoutCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkIndirectCommandsLayoutUsageFlagsNV + pipelineBindPoint::VkPipelineBindPoint + tokenCount::UInt32 + pTokens::Ptr{VkIndirectCommandsLayoutTokenNV} + streamCount::UInt32 + pStreamStrides::Ptr{UInt32} +end + +struct VkGeneratedCommandsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + streamCount::UInt32 + pStreams::Ptr{VkIndirectCommandsStreamNV} + sequencesCount::UInt32 + preprocessBuffer::VkBuffer + preprocessOffset::VkDeviceSize + preprocessSize::VkDeviceSize + sequencesCountBuffer::VkBuffer + sequencesCountOffset::VkDeviceSize + sequencesIndexBuffer::VkBuffer + sequencesIndexOffset::VkDeviceSize +end + +struct VkGeneratedCommandsMemoryRequirementsInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineBindPoint::VkPipelineBindPoint + pipeline::VkPipeline + indirectCommandsLayout::VkIndirectCommandsLayoutNV + maxSequencesCount::UInt32 +end + +# typedef void ( VKAPI_PTR * PFN_vkGetGeneratedCommandsMemoryRequirementsNV ) ( VkDevice device , const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo , VkMemoryRequirements2 * pMemoryRequirements ) +const PFN_vkGetGeneratedCommandsMemoryRequirementsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdPreprocessGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdPreprocessGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdExecuteGeneratedCommandsNV ) ( VkCommandBuffer commandBuffer , VkBool32 isPreprocessed , const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo ) +const PFN_vkCmdExecuteGeneratedCommandsNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkCmdBindPipelineShaderGroupNV ) ( VkCommandBuffer commandBuffer , VkPipelineBindPoint pipelineBindPoint , VkPipeline pipeline , uint32_t groupIndex ) +const PFN_vkCmdBindPipelineShaderGroupNV = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateIndirectCommandsLayoutNV ) ( VkDevice device , const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkIndirectCommandsLayoutNV * pIndirectCommandsLayout ) +const PFN_vkCreateIndirectCommandsLayoutNV = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyIndirectCommandsLayoutNV ) ( VkDevice device , VkIndirectCommandsLayoutNV indirectCommandsLayout , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyIndirectCommandsLayoutNV = Ptr{Cvoid} + +function vkGetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements) + ccall((:vkGetGeneratedCommandsMemoryRequirementsNV, libvulkan), Cvoid, (VkDevice, Ptr{VkGeneratedCommandsMemoryRequirementsInfoNV}, Ptr{VkMemoryRequirements2}), device, pInfo, pMemoryRequirements) +end + +function vkCmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo) + ccall((:vkCmdPreprocessGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, pGeneratedCommandsInfo) +end + +function vkCmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo) + ccall((:vkCmdExecuteGeneratedCommandsNV, libvulkan), Cvoid, (VkCommandBuffer, VkBool32, Ptr{VkGeneratedCommandsInfoNV}), commandBuffer, isPreprocessed, pGeneratedCommandsInfo) +end + +function vkCmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex) + ccall((:vkCmdBindPipelineShaderGroupNV, libvulkan), Cvoid, (VkCommandBuffer, VkPipelineBindPoint, VkPipeline, UInt32), commandBuffer, pipelineBindPoint, pipeline, groupIndex) +end + +function vkCreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout) + ccall((:vkCreateIndirectCommandsLayoutNV, libvulkan), VkResult, (VkDevice, Ptr{VkIndirectCommandsLayoutCreateInfoNV}, Ptr{VkAllocationCallbacks}, Ptr{VkIndirectCommandsLayoutNV}), device, pCreateInfo, pAllocator, pIndirectCommandsLayout) +end + +function vkDestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator) + ccall((:vkDestroyIndirectCommandsLayoutNV, libvulkan), Cvoid, (VkDevice, VkIndirectCommandsLayoutNV, Ptr{VkAllocationCallbacks}), device, indirectCommandsLayout, pAllocator) +end + +struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + texelBufferAlignment::VkBool32 +end + +struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + storageTexelBufferOffsetAlignmentBytes::VkDeviceSize + storageTexelBufferOffsetSingleTexelAlignment::VkBool32 + uniformTexelBufferOffsetAlignmentBytes::VkDeviceSize + uniformTexelBufferOffsetSingleTexelAlignment::VkBool32 +end + +struct VkRenderPassTransformBeginInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR +end + +struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM + sType::VkStructureType + pNext::Ptr{Cvoid} + transform::VkSurfaceTransformFlagBitsKHR + renderArea::VkRect2D +end + +struct VkPhysicalDeviceRobustness2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustBufferAccess2::VkBool32 + robustImageAccess2::VkBool32 + nullDescriptor::VkBool32 +end + +struct VkPhysicalDeviceRobustness2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustStorageBufferAccessSizeAlignment::VkDeviceSize + robustUniformBufferAccessSizeAlignment::VkDeviceSize +end + +struct VkSamplerCustomBorderColorCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColor::VkClearColorValue + format::VkFormat +end + +struct VkPhysicalDeviceCustomBorderColorPropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + maxCustomBorderColorSamplers::UInt32 +end + +struct VkPhysicalDeviceCustomBorderColorFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + customBorderColors::VkBool32 + customBorderColorWithoutFormat::VkBool32 +end + +const VkPrivateDataSlotEXT_T = Cvoid + +const VkPrivateDataSlotEXT = Ptr{VkPrivateDataSlotEXT_T} + +@cenum VkPrivateDataSlotCreateFlagBitsEXT::UInt32 begin + VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 2147483647 +end + +const VkPrivateDataSlotCreateFlagsEXT = VkFlags + +struct VkPhysicalDevicePrivateDataFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateData::VkBool32 +end + +struct VkDevicePrivateDataCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + privateDataSlotRequestCount::UInt32 +end + +struct VkPrivateDataSlotCreateInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkPrivateDataSlotCreateFlagsEXT +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreatePrivateDataSlotEXT ) ( VkDevice device , const VkPrivateDataSlotCreateInfoEXT * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkPrivateDataSlotEXT * pPrivateDataSlot ) +const PFN_vkCreatePrivateDataSlotEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkDestroyPrivateDataSlotEXT ) ( VkDevice device , VkPrivateDataSlotEXT privateDataSlot , const VkAllocationCallbacks * pAllocator ) +const PFN_vkDestroyPrivateDataSlotEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkSetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t data ) +const PFN_vkSetPrivateDataEXT = Ptr{Cvoid} + +# typedef void ( VKAPI_PTR * PFN_vkGetPrivateDataEXT ) ( VkDevice device , VkObjectType objectType , uint64_t objectHandle , VkPrivateDataSlotEXT privateDataSlot , uint64_t * pData ) +const PFN_vkGetPrivateDataEXT = Ptr{Cvoid} + +function vkCreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot) + ccall((:vkCreatePrivateDataSlotEXT, libvulkan), VkResult, (VkDevice, Ptr{VkPrivateDataSlotCreateInfoEXT}, Ptr{VkAllocationCallbacks}, Ptr{VkPrivateDataSlotEXT}), device, pCreateInfo, pAllocator, pPrivateDataSlot) +end + +function vkDestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator) + ccall((:vkDestroyPrivateDataSlotEXT, libvulkan), Cvoid, (VkDevice, VkPrivateDataSlotEXT, Ptr{VkAllocationCallbacks}), device, privateDataSlot, pAllocator) +end + +function vkSetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data) + ccall((:vkSetPrivateDataEXT, libvulkan), VkResult, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, UInt64), device, objectType, objectHandle, privateDataSlot, data) +end + +function vkGetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData) + ccall((:vkGetPrivateDataEXT, libvulkan), Cvoid, (VkDevice, VkObjectType, UInt64, VkPrivateDataSlotEXT, Ptr{UInt64}), device, objectType, objectHandle, privateDataSlot, pData) +end + +struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + pipelineCreationCacheControl::VkBool32 +end + +@cenum VkDeviceDiagnosticsConfigFlagBitsNV::UInt32 begin + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 1 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 2 + VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 4 + VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 2147483647 +end + +const VkDeviceDiagnosticsConfigFlagsNV = VkFlags + +struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV + sType::VkStructureType + pNext::Ptr{Cvoid} + diagnosticsConfig::VkBool32 +end + +struct VkDeviceDiagnosticsConfigCreateInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkDeviceDiagnosticsConfigFlagsNV +end + +struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fragmentDensityMapDeferred::VkBool32 +end + +struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + subsampledLoads::VkBool32 + subsampledCoarseReconstructionEarlyAccess::VkBool32 + maxSubsampledArrayLayers::UInt32 + maxDescriptorSetSubsampledSamplers::UInt32 +end + +struct VkPhysicalDeviceImageRobustnessFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + robustImageAccess::VkBool32 +end + +struct VkPhysicalDevice4444FormatsFeaturesEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + formatA4R4G4B4::VkBool32 + formatA4B4G4R4::VkBool32 +end + +const VkWin32SurfaceCreateFlagsKHR = VkFlags + +struct VkWin32SurfaceCreateInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + flags::VkWin32SurfaceCreateFlagsKHR + hinstance::HINSTANCE + hwnd::HWND +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkCreateWin32SurfaceKHR ) ( VkInstance instance , const VkWin32SurfaceCreateInfoKHR * pCreateInfo , const VkAllocationCallbacks * pAllocator , VkSurfaceKHR * pSurface ) +const PFN_vkCreateWin32SurfaceKHR = Ptr{Cvoid} + +# typedef VkBool32 ( VKAPI_PTR * PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR ) ( VkPhysicalDevice physicalDevice , uint32_t queueFamilyIndex ) +const PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Ptr{Cvoid} + +function vkCreateWin32SurfaceKHR(instance, pCreateInfo, pAllocator, pSurface) + ccall((:vkCreateWin32SurfaceKHR, libvulkan), VkResult, (VkInstance, Ptr{VkWin32SurfaceCreateInfoKHR}, Ptr{VkAllocationCallbacks}, Ptr{VkSurfaceKHR}), instance, pCreateInfo, pAllocator, pSurface) +end + +function vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice, queueFamilyIndex) + ccall((:vkGetPhysicalDeviceWin32PresentationSupportKHR, libvulkan), VkBool32, (VkPhysicalDevice, UInt32), physicalDevice, queueFamilyIndex) +end + +struct VkImportMemoryWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportMemoryWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkMemoryWin32HandlePropertiesKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memoryTypeBits::UInt32 +end + +struct VkMemoryGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + memory::VkDeviceMemory + handleType::VkExternalMemoryHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleKHR ) ( VkDevice device , const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetMemoryWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandlePropertiesKHR ) ( VkDevice device , VkExternalMemoryHandleTypeFlagBits handleType , HANDLE handle , VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties ) +const PFN_vkGetMemoryWin32HandlePropertiesKHR = Ptr{Cvoid} + +function vkGetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetMemoryWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkMemoryGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +function vkGetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties) + ccall((:vkGetMemoryWin32HandlePropertiesKHR, libvulkan), VkResult, (VkDevice, VkExternalMemoryHandleTypeFlagBits, HANDLE, Ptr{VkMemoryWin32HandlePropertiesKHR}), device, handleType, handle, pMemoryWin32HandleProperties) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeouts::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} +end + +struct VkImportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + flags::VkSemaphoreImportFlags + handleType::VkExternalSemaphoreHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportSemaphoreWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkD3D12FenceSubmitInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + waitSemaphoreValuesCount::UInt32 + pWaitSemaphoreValues::Ptr{UInt64} + signalSemaphoreValuesCount::UInt32 + pSignalSemaphoreValues::Ptr{UInt64} +end + +struct VkSemaphoreGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + semaphore::VkSemaphore + handleType::VkExternalSemaphoreHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportSemaphoreWin32HandleKHR ) ( VkDevice device , const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo ) +const PFN_vkImportSemaphoreWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetSemaphoreWin32HandleKHR ) ( VkDevice device , const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetSemaphoreWin32HandleKHR = Ptr{Cvoid} + +function vkImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo) + ccall((:vkImportSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportSemaphoreWin32HandleInfoKHR}), device, pImportSemaphoreWin32HandleInfo) +end + +function vkGetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetSemaphoreWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkSemaphoreGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +struct VkImportFenceWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + flags::VkFenceImportFlags + handleType::VkExternalFenceHandleTypeFlagBits + handle::HANDLE + name::LPCWSTR +end + +struct VkExportFenceWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD + name::LPCWSTR +end + +struct VkFenceGetWin32HandleInfoKHR + sType::VkStructureType + pNext::Ptr{Cvoid} + fence::VkFence + handleType::VkExternalFenceHandleTypeFlagBits +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkImportFenceWin32HandleKHR ) ( VkDevice device , const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo ) +const PFN_vkImportFenceWin32HandleKHR = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetFenceWin32HandleKHR ) ( VkDevice device , const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo , HANDLE * pHandle ) +const PFN_vkGetFenceWin32HandleKHR = Ptr{Cvoid} + +function vkImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo) + ccall((:vkImportFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkImportFenceWin32HandleInfoKHR}), device, pImportFenceWin32HandleInfo) +end + +function vkGetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle) + ccall((:vkGetFenceWin32HandleKHR, libvulkan), VkResult, (VkDevice, Ptr{VkFenceGetWin32HandleInfoKHR}, Ptr{HANDLE}), device, pGetWin32HandleInfo, pHandle) +end + +struct VkImportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + handleType::VkExternalMemoryHandleTypeFlagsNV + handle::HANDLE +end + +struct VkExportMemoryWin32HandleInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + pAttributes::Ptr{SECURITY_ATTRIBUTES} + dwAccess::DWORD +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetMemoryWin32HandleNV ) ( VkDevice device , VkDeviceMemory memory , VkExternalMemoryHandleTypeFlagsNV handleType , HANDLE * pHandle ) +const PFN_vkGetMemoryWin32HandleNV = Ptr{Cvoid} + +function vkGetMemoryWin32HandleNV(device, memory, handleType, pHandle) + ccall((:vkGetMemoryWin32HandleNV, libvulkan), VkResult, (VkDevice, VkDeviceMemory, VkExternalMemoryHandleTypeFlagsNV, Ptr{HANDLE}), device, memory, handleType, pHandle) +end + +struct VkWin32KeyedMutexAcquireReleaseInfoNV + sType::VkStructureType + pNext::Ptr{Cvoid} + acquireCount::UInt32 + pAcquireSyncs::Ptr{VkDeviceMemory} + pAcquireKeys::Ptr{UInt64} + pAcquireTimeoutMilliseconds::Ptr{UInt32} + releaseCount::UInt32 + pReleaseSyncs::Ptr{VkDeviceMemory} + pReleaseKeys::Ptr{UInt64} +end + +@cenum VkFullScreenExclusiveEXT::UInt32 begin + VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0 + VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1 + VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2 + VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3 + VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 2147483647 +end + +struct VkSurfaceFullScreenExclusiveInfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fullScreenExclusive::VkFullScreenExclusiveEXT +end + +struct VkSurfaceCapabilitiesFullScreenExclusiveEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + fullScreenExclusiveSupported::VkBool32 +end + +struct VkSurfaceFullScreenExclusiveWin32InfoEXT + sType::VkStructureType + pNext::Ptr{Cvoid} + hmonitor::HMONITOR +end + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT ) ( VkPhysicalDevice physicalDevice , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , uint32_t * pPresentModeCount , VkPresentModeKHR * pPresentModes ) +const PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkAcquireFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkAcquireFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkReleaseFullScreenExclusiveModeEXT ) ( VkDevice device , VkSwapchainKHR swapchain ) +const PFN_vkReleaseFullScreenExclusiveModeEXT = Ptr{Cvoid} + +# typedef VkResult ( VKAPI_PTR * PFN_vkGetDeviceGroupSurfacePresentModes2EXT ) ( VkDevice device , const VkPhysicalDeviceSurfaceInfo2KHR * pSurfaceInfo , VkDeviceGroupPresentModeFlagsKHR * pModes ) +const PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Ptr{Cvoid} + +function vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) + ccall((:vkGetPhysicalDeviceSurfacePresentModes2EXT, libvulkan), VkResult, (VkPhysicalDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{UInt32}, Ptr{VkPresentModeKHR}), physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes) +end + +function vkAcquireFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkAcquireFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +function vkReleaseFullScreenExclusiveModeEXT(device, swapchain) + ccall((:vkReleaseFullScreenExclusiveModeEXT, libvulkan), VkResult, (VkDevice, VkSwapchainKHR), device, swapchain) +end + +function vkGetDeviceGroupSurfacePresentModes2EXT(device, pSurfaceInfo, pModes) + ccall((:vkGetDeviceGroupSurfacePresentModes2EXT, libvulkan), VkResult, (VkDevice, Ptr{VkPhysicalDeviceSurfaceInfo2KHR}, Ptr{VkDeviceGroupPresentModeFlagsKHR}), device, pSurfaceInfo, pModes) +end + +const VULKAN_H_ = 1 + +const VULKAN_CORE_H_ = 1 + +const VK_VERSION_1_0 = 1 + +const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) + +const VK_HEADER_VERSION = 151 + +const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) + +const VK_NULL_HANDLE = 0 + +const VK_ATTACHMENT_UNUSED = ~(Cuint(0)) + +const VK_FALSE = 0 + +const VK_LOD_CLAMP_NONE = Float32(1000.0) + +const VK_QUEUE_FAMILY_IGNORED = ~(Cuint(0)) + +const VK_REMAINING_ARRAY_LAYERS = ~(Cuint(0)) + +const VK_REMAINING_MIP_LEVELS = ~(Cuint(0)) + +const VK_SUBPASS_EXTERNAL = ~(Cuint(0)) + +const VK_TRUE = 1 + +const VK_WHOLE_SIZE = ~(Culonglong(0)) + +const VK_MAX_MEMORY_TYPES = 32 + +const VK_MAX_MEMORY_HEAPS = 16 + +const VK_MAX_PHYSICAL_DEVICE_NAME_SIZE = 256 + +const VK_UUID_SIZE = 16 + +const VK_MAX_EXTENSION_NAME_SIZE = 256 + +const VK_MAX_DESCRIPTION_SIZE = 256 + +const VK_VERSION_1_1 = 1 + +const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) + +const VK_MAX_DEVICE_GROUP_SIZE = 32 + +const VK_LUID_SIZE = 8 + +const VK_QUEUE_FAMILY_EXTERNAL = ~(Cuint(0)) - 1 + +const VK_VERSION_1_2 = 1 + +const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) + +const VK_MAX_DRIVER_NAME_SIZE = 256 + +const VK_MAX_DRIVER_INFO_SIZE = 256 + +const VK_KHR_surface = 1 + +const VK_KHR_SURFACE_SPEC_VERSION = 25 + +const VK_KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface" + +const VK_KHR_swapchain = 1 + +const VK_KHR_SWAPCHAIN_SPEC_VERSION = 70 + +const VK_KHR_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_swapchain" + +const VK_KHR_display = 1 + +const VK_KHR_DISPLAY_SPEC_VERSION = 23 + +const VK_KHR_DISPLAY_EXTENSION_NAME = "VK_KHR_display" + +const VK_KHR_display_swapchain = 1 + +const VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION = 10 + +const VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME = "VK_KHR_display_swapchain" + +const VK_KHR_sampler_mirror_clamp_to_edge = 1 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION = 3 + +const VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME = "VK_KHR_sampler_mirror_clamp_to_edge" + +const VK_KHR_multiview = 1 + +const VK_KHR_MULTIVIEW_SPEC_VERSION = 1 + +const VK_KHR_MULTIVIEW_EXTENSION_NAME = "VK_KHR_multiview" + +const VK_KHR_get_physical_device_properties2 = 1 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION = 2 + +const VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_physical_device_properties2" + +const VK_KHR_device_group = 1 + +const VK_KHR_DEVICE_GROUP_SPEC_VERSION = 4 + +const VK_KHR_DEVICE_GROUP_EXTENSION_NAME = "VK_KHR_device_group" + +const VK_KHR_shader_draw_parameters = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION = 1 + +const VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME = "VK_KHR_shader_draw_parameters" + +const VK_KHR_maintenance1 = 1 + +const VK_KHR_MAINTENANCE1_SPEC_VERSION = 2 + +const VK_KHR_MAINTENANCE1_EXTENSION_NAME = "VK_KHR_maintenance1" + +const VK_KHR_device_group_creation = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION = 1 + +const VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME = "VK_KHR_device_group_creation" + +const VK_MAX_DEVICE_GROUP_SIZE_KHR = VK_MAX_DEVICE_GROUP_SIZE + +const VK_KHR_external_memory_capabilities = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_memory_capabilities" + +const VK_LUID_SIZE_KHR = VK_LUID_SIZE + +const VK_KHR_external_memory = 1 + +const VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_KHR_external_memory" + +const VK_QUEUE_FAMILY_EXTERNAL_KHR = VK_QUEUE_FAMILY_EXTERNAL + +const VK_KHR_external_memory_fd = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME = "VK_KHR_external_memory_fd" + +const VK_KHR_external_semaphore_capabilities = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_semaphore_capabilities" + +const VK_KHR_external_semaphore = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME = "VK_KHR_external_semaphore" + +const VK_KHR_external_semaphore_fd = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME = "VK_KHR_external_semaphore_fd" + +const VK_KHR_push_descriptor = 1 + +const VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION = 2 + +const VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME = "VK_KHR_push_descriptor" + +const VK_KHR_shader_float16_int8 = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION = 1 + +const VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME = "VK_KHR_shader_float16_int8" + +const VK_KHR_16bit_storage = 1 + +const VK_KHR_16BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_16BIT_STORAGE_EXTENSION_NAME = "VK_KHR_16bit_storage" + +const VK_KHR_incremental_present = 1 + +const VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION = 1 + +const VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME = "VK_KHR_incremental_present" + +const VK_KHR_descriptor_update_template = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1 + +const VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" + +const VK_KHR_imageless_framebuffer = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION = 1 + +const VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME = "VK_KHR_imageless_framebuffer" + +const VK_KHR_create_renderpass2 = 1 + +const VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION = 1 + +const VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME = "VK_KHR_create_renderpass2" + +const VK_KHR_shared_presentable_image = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION = 1 + +const VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME = "VK_KHR_shared_presentable_image" + +const VK_KHR_external_fence_capabilities = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME = "VK_KHR_external_fence_capabilities" + +const VK_KHR_external_fence = 1 + +const VK_KHR_EXTERNAL_FENCE_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME = "VK_KHR_external_fence" + +const VK_KHR_external_fence_fd = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME = "VK_KHR_external_fence_fd" + +const VK_KHR_performance_query = 1 + +const VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION = 1 + +const VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_KHR_performance_query" + +const VK_KHR_maintenance2 = 1 + +const VK_KHR_MAINTENANCE2_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE2_EXTENSION_NAME = "VK_KHR_maintenance2" + +const VK_KHR_get_surface_capabilities2 = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME = "VK_KHR_get_surface_capabilities2" + +const VK_KHR_variable_pointers = 1 + +const VK_KHR_VARIABLE_POINTERS_SPEC_VERSION = 1 + +const VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME = "VK_KHR_variable_pointers" + +const VK_KHR_get_display_properties2 = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME = "VK_KHR_get_display_properties2" + +const VK_KHR_dedicated_allocation = 1 + +const VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION = 3 + +const VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_KHR_dedicated_allocation" + +const VK_KHR_storage_buffer_storage_class = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION = 1 + +const VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME = "VK_KHR_storage_buffer_storage_class" + +const VK_KHR_relaxed_block_layout = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME = "VK_KHR_relaxed_block_layout" + +const VK_KHR_get_memory_requirements2 = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION = 1 + +const VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME = "VK_KHR_get_memory_requirements2" + +const VK_KHR_image_format_list = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION = 1 + +const VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME = "VK_KHR_image_format_list" + +const VK_KHR_sampler_ycbcr_conversion = 1 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION = 14 + +const VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME = "VK_KHR_sampler_ycbcr_conversion" + +const VK_KHR_bind_memory2 = 1 + +const VK_KHR_BIND_MEMORY_2_SPEC_VERSION = 1 + +const VK_KHR_BIND_MEMORY_2_EXTENSION_NAME = "VK_KHR_bind_memory2" + +const VK_KHR_maintenance3 = 1 + +const VK_KHR_MAINTENANCE3_SPEC_VERSION = 1 + +const VK_KHR_MAINTENANCE3_EXTENSION_NAME = "VK_KHR_maintenance3" + +const VK_KHR_draw_indirect_count = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION = 1 + +const VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_KHR_draw_indirect_count" + +const VK_KHR_shader_subgroup_extended_types = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION = 1 + +const VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME = "VK_KHR_shader_subgroup_extended_types" + +const VK_KHR_8bit_storage = 1 + +const VK_KHR_8BIT_STORAGE_SPEC_VERSION = 1 + +const VK_KHR_8BIT_STORAGE_EXTENSION_NAME = "VK_KHR_8bit_storage" + +const VK_KHR_shader_atomic_int64 = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION = 1 + +const VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME = "VK_KHR_shader_atomic_int64" + +const VK_KHR_shader_clock = 1 + +const VK_KHR_SHADER_CLOCK_SPEC_VERSION = 1 + +const VK_KHR_SHADER_CLOCK_EXTENSION_NAME = "VK_KHR_shader_clock" + +const VK_KHR_driver_properties = 1 + +const VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME = "VK_KHR_driver_properties" + +const VK_MAX_DRIVER_NAME_SIZE_KHR = VK_MAX_DRIVER_NAME_SIZE + +const VK_MAX_DRIVER_INFO_SIZE_KHR = VK_MAX_DRIVER_INFO_SIZE + +const VK_KHR_shader_float_controls = 1 + +const VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION = 4 + +const VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME = "VK_KHR_shader_float_controls" + +const VK_KHR_depth_stencil_resolve = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION = 1 + +const VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME = "VK_KHR_depth_stencil_resolve" + +const VK_KHR_swapchain_mutable_format = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION = 1 + +const VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME = "VK_KHR_swapchain_mutable_format" + +const VK_KHR_timeline_semaphore = 1 + +const VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION = 2 + +const VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME = "VK_KHR_timeline_semaphore" + +const VK_KHR_vulkan_memory_model = 1 + +const VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION = 3 + +const VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME = "VK_KHR_vulkan_memory_model" + +const VK_KHR_spirv_1_4 = 1 + +const VK_KHR_SPIRV_1_4_SPEC_VERSION = 1 + +const VK_KHR_SPIRV_1_4_EXTENSION_NAME = "VK_KHR_spirv_1_4" + +const VK_KHR_surface_protected_capabilities = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION = 1 + +const VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME = "VK_KHR_surface_protected_capabilities" + +const VK_KHR_separate_depth_stencil_layouts = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION = 1 + +const VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME = "VK_KHR_separate_depth_stencil_layouts" + +const VK_KHR_uniform_buffer_standard_layout = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION = 1 + +const VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME = "VK_KHR_uniform_buffer_standard_layout" + +const VK_KHR_buffer_device_address = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 1 + +const VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_KHR_buffer_device_address" + +const VK_KHR_pipeline_executable_properties = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION = 1 + +const VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME = "VK_KHR_pipeline_executable_properties" + +const VK_KHR_shader_non_semantic_info = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION = 1 + +const VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME = "VK_KHR_shader_non_semantic_info" + +const VK_EXT_debug_report = 1 + +const VK_EXT_DEBUG_REPORT_SPEC_VERSION = 9 + +const VK_EXT_DEBUG_REPORT_EXTENSION_NAME = "VK_EXT_debug_report" + +const VK_NV_glsl_shader = 1 + +const VK_NV_GLSL_SHADER_SPEC_VERSION = 1 + +const VK_NV_GLSL_SHADER_EXTENSION_NAME = "VK_NV_glsl_shader" + +const VK_EXT_depth_range_unrestricted = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME = "VK_EXT_depth_range_unrestricted" + +const VK_IMG_filter_cubic = 1 + +const VK_IMG_FILTER_CUBIC_SPEC_VERSION = 1 + +const VK_IMG_FILTER_CUBIC_EXTENSION_NAME = "VK_IMG_filter_cubic" + +const VK_AMD_rasterization_order = 1 + +const VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION = 1 + +const VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME = "VK_AMD_rasterization_order" + +const VK_AMD_shader_trinary_minmax = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION = 1 + +const VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME = "VK_AMD_shader_trinary_minmax" + +const VK_AMD_shader_explicit_vertex_parameter = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION = 1 + +const VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME = "VK_AMD_shader_explicit_vertex_parameter" + +const VK_EXT_debug_marker = 1 + +const VK_EXT_DEBUG_MARKER_SPEC_VERSION = 4 + +const VK_EXT_DEBUG_MARKER_EXTENSION_NAME = "VK_EXT_debug_marker" + +const VK_AMD_gcn_shader = 1 + +const VK_AMD_GCN_SHADER_SPEC_VERSION = 1 + +const VK_AMD_GCN_SHADER_EXTENSION_NAME = "VK_AMD_gcn_shader" + +const VK_NV_dedicated_allocation = 1 + +const VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME = "VK_NV_dedicated_allocation" + +const VK_EXT_transform_feedback = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME = "VK_EXT_transform_feedback" + +const VK_NVX_image_view_handle = 1 + +const VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION = 2 + +const VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME = "VK_NVX_image_view_handle" + +const VK_AMD_draw_indirect_count = 1 + +const VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION = 2 + +const VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME = "VK_AMD_draw_indirect_count" + +const VK_AMD_negative_viewport_height = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION = 1 + +const VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME = "VK_AMD_negative_viewport_height" + +const VK_AMD_gpu_shader_half_float = 1 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME = "VK_AMD_gpu_shader_half_float" + +const VK_AMD_shader_ballot = 1 + +const VK_AMD_SHADER_BALLOT_SPEC_VERSION = 1 + +const VK_AMD_SHADER_BALLOT_EXTENSION_NAME = "VK_AMD_shader_ballot" + +const VK_AMD_texture_gather_bias_lod = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION = 1 + +const VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME = "VK_AMD_texture_gather_bias_lod" + +const VK_AMD_shader_info = 1 + +const VK_AMD_SHADER_INFO_SPEC_VERSION = 1 + +const VK_AMD_SHADER_INFO_EXTENSION_NAME = "VK_AMD_shader_info" + +const VK_AMD_shader_image_load_store_lod = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION = 1 + +const VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME = "VK_AMD_shader_image_load_store_lod" + +const VK_NV_corner_sampled_image = 1 + +const VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION = 2 + +const VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME = "VK_NV_corner_sampled_image" + +const VK_IMG_format_pvrtc = 1 + +const VK_IMG_FORMAT_PVRTC_SPEC_VERSION = 1 + +const VK_IMG_FORMAT_PVRTC_EXTENSION_NAME = "VK_IMG_format_pvrtc" + +const VK_NV_external_memory_capabilities = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities" + +const VK_NV_external_memory = 1 + +const VK_NV_EXTERNAL_MEMORY_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME = "VK_NV_external_memory" + +const VK_EXT_validation_flags = 1 + +const VK_EXT_VALIDATION_FLAGS_SPEC_VERSION = 2 + +const VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME = "VK_EXT_validation_flags" + +const VK_EXT_shader_subgroup_ballot = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot" + +const VK_EXT_shader_subgroup_vote = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION = 1 + +const VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME = "VK_EXT_shader_subgroup_vote" + +const VK_EXT_texture_compression_astc_hdr = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1 + +const VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME = "VK_EXT_texture_compression_astc_hdr" + +const VK_EXT_astc_decode_mode = 1 + +const VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION = 1 + +const VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME = "VK_EXT_astc_decode_mode" + +const VK_EXT_conditional_rendering = 1 + +const VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION = 2 + +const VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME = "VK_EXT_conditional_rendering" + +const VK_NV_clip_space_w_scaling = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION = 1 + +const VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME = "VK_NV_clip_space_w_scaling" + +const VK_EXT_direct_mode_display = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION = 1 + +const VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME = "VK_EXT_direct_mode_display" + +const VK_EXT_display_surface_counter = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME = "VK_EXT_display_surface_counter" + +const VK_EXT_display_control = 1 + +const VK_EXT_DISPLAY_CONTROL_SPEC_VERSION = 1 + +const VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME = "VK_EXT_display_control" + +const VK_GOOGLE_display_timing = 1 + +const VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION = 1 + +const VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME = "VK_GOOGLE_display_timing" + +const VK_NV_sample_mask_override_coverage = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION = 1 + +const VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME = "VK_NV_sample_mask_override_coverage" + +const VK_NV_geometry_shader_passthrough = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION = 1 + +const VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME = "VK_NV_geometry_shader_passthrough" + +const VK_NV_viewport_array2 = 1 + +const VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME = "VK_NV_viewport_array2" + +const VK_NVX_multiview_per_view_attributes = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION = 1 + +const VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME = "VK_NVX_multiview_per_view_attributes" + +const VK_NV_viewport_swizzle = 1 + +const VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION = 1 + +const VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME = "VK_NV_viewport_swizzle" + +const VK_EXT_discard_rectangles = 1 + +const VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION = 1 + +const VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME = "VK_EXT_discard_rectangles" + +const VK_EXT_conservative_rasterization = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_conservative_rasterization" + +const VK_EXT_depth_clip_enable = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION = 1 + +const VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME = "VK_EXT_depth_clip_enable" + +const VK_EXT_swapchain_colorspace = 1 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION = 4 + +const VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME = "VK_EXT_swapchain_colorspace" + +const VK_EXT_hdr_metadata = 1 + +const VK_EXT_HDR_METADATA_SPEC_VERSION = 2 + +const VK_EXT_HDR_METADATA_EXTENSION_NAME = "VK_EXT_hdr_metadata" + +const VK_EXT_external_memory_dma_buf = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME = "VK_EXT_external_memory_dma_buf" + +const VK_EXT_queue_family_foreign = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION = 1 + +const VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME = "VK_EXT_queue_family_foreign" + +const VK_QUEUE_FAMILY_FOREIGN_EXT = ~(Cuint(0)) - 2 + +const VK_EXT_debug_utils = 1 + +const VK_EXT_DEBUG_UTILS_SPEC_VERSION = 2 + +const VK_EXT_DEBUG_UTILS_EXTENSION_NAME = "VK_EXT_debug_utils" + +const VK_EXT_sampler_filter_minmax = 1 + +const VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION = 2 + +const VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME = "VK_EXT_sampler_filter_minmax" + +const VK_AMD_gpu_shader_int16 = 1 + +const VK_AMD_GPU_SHADER_INT16_SPEC_VERSION = 2 + +const VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME = "VK_AMD_gpu_shader_int16" + +const VK_AMD_mixed_attachment_samples = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION = 1 + +const VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME = "VK_AMD_mixed_attachment_samples" + +const VK_AMD_shader_fragment_mask = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1 + +const VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask" + +const VK_EXT_inline_uniform_block = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1 + +const VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME = "VK_EXT_inline_uniform_block" + +const VK_EXT_shader_stencil_export = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME = "VK_EXT_shader_stencil_export" + +const VK_EXT_sample_locations = 1 + +const VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION = 1 + +const VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME = "VK_EXT_sample_locations" + +const VK_EXT_blend_operation_advanced = 1 + +const VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION = 2 + +const VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME = "VK_EXT_blend_operation_advanced" + +const VK_NV_fragment_coverage_to_color = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME = "VK_NV_fragment_coverage_to_color" + +const VK_NV_framebuffer_mixed_samples = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION = 1 + +const VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME = "VK_NV_framebuffer_mixed_samples" + +const VK_NV_fill_rectangle = 1 + +const VK_NV_FILL_RECTANGLE_SPEC_VERSION = 1 + +const VK_NV_FILL_RECTANGLE_EXTENSION_NAME = "VK_NV_fill_rectangle" + +const VK_NV_shader_sm_builtins = 1 + +const VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION = 1 + +const VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME = "VK_NV_shader_sm_builtins" + +const VK_EXT_post_depth_coverage = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION = 1 + +const VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME = "VK_EXT_post_depth_coverage" + +const VK_EXT_image_drm_format_modifier = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME = "VK_EXT_image_drm_format_modifier" + +const VK_EXT_validation_cache = 1 + +const VK_EXT_VALIDATION_CACHE_SPEC_VERSION = 1 + +const VK_EXT_VALIDATION_CACHE_EXTENSION_NAME = "VK_EXT_validation_cache" + +const VK_EXT_descriptor_indexing = 1 + +const VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION = 2 + +const VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME = "VK_EXT_descriptor_indexing" + +const VK_EXT_shader_viewport_index_layer = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION = 1 + +const VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME = "VK_EXT_shader_viewport_index_layer" + +const VK_NV_shading_rate_image = 1 + +const VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION = 3 + +const VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME = "VK_NV_shading_rate_image" + +const VK_NV_ray_tracing = 1 + +const VK_NV_RAY_TRACING_SPEC_VERSION = 3 + +const VK_NV_RAY_TRACING_EXTENSION_NAME = "VK_NV_ray_tracing" + +const VK_SHADER_UNUSED_KHR = ~(Cuint(0)) + +const VK_SHADER_UNUSED_NV = VK_SHADER_UNUSED_KHR + +const VK_NV_representative_fragment_test = 1 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION = 2 + +const VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME = "VK_NV_representative_fragment_test" + +const VK_EXT_filter_cubic = 1 + +const VK_EXT_FILTER_CUBIC_SPEC_VERSION = 3 + +const VK_EXT_FILTER_CUBIC_EXTENSION_NAME = "VK_EXT_filter_cubic" + +const VK_QCOM_render_pass_shader_resolve = 1 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION = 4 + +const VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME = "VK_QCOM_render_pass_shader_resolve" + +const VK_EXT_global_priority = 1 + +const VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2 + +const VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_EXT_global_priority" + +const VK_EXT_external_memory_host = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION = 1 + +const VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME = "VK_EXT_external_memory_host" + +const VK_AMD_buffer_marker = 1 + +const VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1 + +const VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker" + +const VK_AMD_pipeline_compiler_control = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION = 1 + +const VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME = "VK_AMD_pipeline_compiler_control" + +const VK_EXT_calibrated_timestamps = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION = 1 + +const VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME = "VK_EXT_calibrated_timestamps" + +const VK_AMD_shader_core_properties = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION = 2 + +const VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME = "VK_AMD_shader_core_properties" + +const VK_AMD_memory_overallocation_behavior = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION = 1 + +const VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME = "VK_AMD_memory_overallocation_behavior" + +const VK_EXT_vertex_attribute_divisor = 1 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION = 3 + +const VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME = "VK_EXT_vertex_attribute_divisor" + +const VK_EXT_pipeline_creation_feedback = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1 + +const VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME = "VK_EXT_pipeline_creation_feedback" + +const VK_NV_shader_subgroup_partitioned = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION = 1 + +const VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME = "VK_NV_shader_subgroup_partitioned" + +const VK_NV_compute_shader_derivatives = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION = 1 + +const VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME = "VK_NV_compute_shader_derivatives" + +const VK_NV_mesh_shader = 1 + +const VK_NV_MESH_SHADER_SPEC_VERSION = 1 + +const VK_NV_MESH_SHADER_EXTENSION_NAME = "VK_NV_mesh_shader" + +const VK_NV_fragment_shader_barycentric = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION = 1 + +const VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME = "VK_NV_fragment_shader_barycentric" + +const VK_NV_shader_image_footprint = 1 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION = 2 + +const VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME = "VK_NV_shader_image_footprint" + +const VK_NV_scissor_exclusive = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION = 1 + +const VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME = "VK_NV_scissor_exclusive" + +const VK_NV_device_diagnostic_checkpoints = 1 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION = 2 + +const VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME = "VK_NV_device_diagnostic_checkpoints" + +const VK_INTEL_shader_integer_functions2 = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION = 1 + +const VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME = "VK_INTEL_shader_integer_functions2" + +const VK_INTEL_performance_query = 1 + +const VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION = 2 + +const VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME = "VK_INTEL_performance_query" + +const VK_EXT_pci_bus_info = 1 + +const VK_EXT_PCI_BUS_INFO_SPEC_VERSION = 2 + +const VK_EXT_PCI_BUS_INFO_EXTENSION_NAME = "VK_EXT_pci_bus_info" + +const VK_AMD_display_native_hdr = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION = 1 + +const VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME = "VK_AMD_display_native_hdr" + +const VK_EXT_fragment_density_map = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME = "VK_EXT_fragment_density_map" + +const VK_EXT_scalar_block_layout = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION = 1 + +const VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME = "VK_EXT_scalar_block_layout" + +const VK_GOOGLE_hlsl_functionality1 = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION = 1 + +const VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME = "VK_GOOGLE_hlsl_functionality1" + +const VK_GOOGLE_decorate_string = 1 + +const VK_GOOGLE_DECORATE_STRING_SPEC_VERSION = 1 + +const VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME = "VK_GOOGLE_decorate_string" + +const VK_EXT_subgroup_size_control = 1 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2 + +const VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME = "VK_EXT_subgroup_size_control" + +const VK_AMD_shader_core_properties2 = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION = 1 + +const VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME = "VK_AMD_shader_core_properties2" + +const VK_AMD_device_coherent_memory = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION = 1 + +const VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME = "VK_AMD_device_coherent_memory" + +const VK_EXT_memory_budget = 1 + +const VK_EXT_MEMORY_BUDGET_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_BUDGET_EXTENSION_NAME = "VK_EXT_memory_budget" + +const VK_EXT_memory_priority = 1 + +const VK_EXT_MEMORY_PRIORITY_SPEC_VERSION = 1 + +const VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME = "VK_EXT_memory_priority" + +const VK_NV_dedicated_allocation_image_aliasing = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION = 1 + +const VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME = "VK_NV_dedicated_allocation_image_aliasing" + +const VK_EXT_buffer_device_address = 1 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION = 2 + +const VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME = "VK_EXT_buffer_device_address" + +const VK_EXT_tooling_info = 1 + +const VK_EXT_TOOLING_INFO_SPEC_VERSION = 1 + +const VK_EXT_TOOLING_INFO_EXTENSION_NAME = "VK_EXT_tooling_info" + +const VK_EXT_separate_stencil_usage = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION = 1 + +const VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME = "VK_EXT_separate_stencil_usage" + +const VK_EXT_validation_features = 1 + +const VK_EXT_VALIDATION_FEATURES_SPEC_VERSION = 4 + +const VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME = "VK_EXT_validation_features" + +const VK_NV_cooperative_matrix = 1 + +const VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION = 1 + +const VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME = "VK_NV_cooperative_matrix" + +const VK_NV_coverage_reduction_mode = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION = 1 + +const VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME = "VK_NV_coverage_reduction_mode" + +const VK_EXT_fragment_shader_interlock = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME = "VK_EXT_fragment_shader_interlock" + +const VK_EXT_ycbcr_image_arrays = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION = 1 + +const VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME = "VK_EXT_ycbcr_image_arrays" + +const VK_EXT_headless_surface = 1 + +const VK_EXT_HEADLESS_SURFACE_SPEC_VERSION = 1 + +const VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME = "VK_EXT_headless_surface" + +const VK_EXT_line_rasterization = 1 + +const VK_EXT_LINE_RASTERIZATION_SPEC_VERSION = 1 + +const VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME = "VK_EXT_line_rasterization" + +const VK_EXT_shader_atomic_float = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION = 1 + +const VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME = "VK_EXT_shader_atomic_float" + +const VK_EXT_host_query_reset = 1 + +const VK_EXT_HOST_QUERY_RESET_SPEC_VERSION = 1 + +const VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME = "VK_EXT_host_query_reset" + +const VK_EXT_index_type_uint8 = 1 + +const VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION = 1 + +const VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME = "VK_EXT_index_type_uint8" + +const VK_EXT_extended_dynamic_state = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION = 1 + +const VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME = "VK_EXT_extended_dynamic_state" + +const VK_EXT_shader_demote_to_helper_invocation = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1 + +const VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME = "VK_EXT_shader_demote_to_helper_invocation" + +const VK_NV_device_generated_commands = 1 + +const VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 + +const VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NV_device_generated_commands" + +const VK_EXT_texel_buffer_alignment = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1 + +const VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME = "VK_EXT_texel_buffer_alignment" + +const VK_QCOM_render_pass_transform = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION = 1 + +const VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME = "VK_QCOM_render_pass_transform" + +const VK_EXT_robustness2 = 1 + +const VK_EXT_ROBUSTNESS_2_SPEC_VERSION = 1 + +const VK_EXT_ROBUSTNESS_2_EXTENSION_NAME = "VK_EXT_robustness2" + +const VK_EXT_custom_border_color = 1 + +const VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION = 12 + +const VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME = "VK_EXT_custom_border_color" + +const VK_GOOGLE_user_type = 1 + +const VK_GOOGLE_USER_TYPE_SPEC_VERSION = 1 + +const VK_GOOGLE_USER_TYPE_EXTENSION_NAME = "VK_GOOGLE_user_type" + +const VK_EXT_private_data = 1 + +const VK_EXT_PRIVATE_DATA_SPEC_VERSION = 1 + +const VK_EXT_PRIVATE_DATA_EXTENSION_NAME = "VK_EXT_private_data" + +const VK_EXT_pipeline_creation_cache_control = 1 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3 + +const VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME = "VK_EXT_pipeline_creation_cache_control" + +const VK_NV_device_diagnostics_config = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION = 1 + +const VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME = "VK_NV_device_diagnostics_config" + +const VK_QCOM_render_pass_store_ops = 1 + +const VK_QCOM_render_pass_store_ops_SPEC_VERSION = 2 + +const VK_QCOM_render_pass_store_ops_EXTENSION_NAME = "VK_QCOM_render_pass_store_ops" + +const VK_EXT_fragment_density_map2 = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION = 1 + +const VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME = "VK_EXT_fragment_density_map2" + +const VK_EXT_image_robustness = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1 + +const VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME = "VK_EXT_image_robustness" + +const VK_EXT_4444_formats = 1 + +const VK_EXT_4444_FORMATS_SPEC_VERSION = 1 + +const VK_EXT_4444_FORMATS_EXTENSION_NAME = "VK_EXT_4444_formats" + +const VULKAN_WIN32_H_ = 1 + +const VK_KHR_win32_surface = 1 + +const VK_KHR_WIN32_SURFACE_SPEC_VERSION = 6 + +const VK_KHR_WIN32_SURFACE_EXTENSION_NAME = "VK_KHR_win32_surface" + +const VK_KHR_external_memory_win32 = 1 + +const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_KHR_external_memory_win32" + +const VK_KHR_win32_keyed_mutex = 1 + +const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION = 1 + +const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_KHR_win32_keyed_mutex" + +const VK_KHR_external_semaphore_win32 = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME = "VK_KHR_external_semaphore_win32" + +const VK_KHR_external_fence_win32 = 1 + +const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION = 1 + +const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME = "VK_KHR_external_fence_win32" + +const VK_NV_external_memory_win32 = 1 + +const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION = 1 + +const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME = "VK_NV_external_memory_win32" + +const VK_NV_win32_keyed_mutex = 1 + +const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION = 2 + +const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME = "VK_NV_win32_keyed_mutex" + +const VK_EXT_full_screen_exclusive = 1 + +const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION = 4 + +const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME = "VK_EXT_full_screen_exclusive" + diff --git a/src/CEnum.jl b/src/CEnum.jl index 8f5fe61..eaf2847 100644 --- a/src/CEnum.jl +++ b/src/CEnum.jl @@ -1,114 +1,171 @@ +# Copyright (c) 2019 JuliaInterop + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +# copied from https://github.com/JuliaLang/julia/pull/30924 +# modified to be in compliance with C99: http://port70.net/~nsz/c/c99/n1256.html#6.7.2.2 module CEnum -abstract type Cenum{T} end +import Core.Intrinsics.bitcast +export @cenum -Base.:|(a::T, b::T) where {T<:Cenum{UInt32}} = UInt32(a) | UInt32(b) -Base.:&(a::T, b::T) where {T<:Cenum{UInt32}} = UInt32(a) & UInt32(b) -Base.:(==)(a::Integer, b::Cenum{T}) where {T<:Integer} = a == T(b) -Base.:(==)(a::Cenum, b::Integer) = b == a +function namemap end +function name_value_pairs end -# typemin and typemax won't change for an enum, so we might as well inline them per type -Base.typemax(::Type{T}) where {T<:Cenum} = last(enum_values(T)) -Base.typemin(::Type{T}) where {T<:Cenum} = first(enum_values(T)) +""" + Cenum{T<:Integer} +The abstract supertype of all enumerated types defined with [`@cenum`](@ref). +""" +abstract type Cenum{T<:Integer} end -Base.convert(::Type{Integer}, x::Cenum{T}) where {T<:Integer} = Base.bitcast(T, x) -Base.convert(::Type{T}, x::Cenum{T2}) where {T<:Integer,T2<:Integer} = convert(T, Base.bitcast(T2, x)) +basetype(::Type{<:Cenum{T}}) where {T<:Integer} = T -(::Type{T})(x::Cenum{T2}) where {T<:Integer,T2<:Integer} = T(Base.bitcast(T2, x))::T -(::Type{T})(x) where {T<:Cenum} = convert(T, x) +(::Type{T})(x::Cenum{T2}) where {T<:Integer,T2<:Integer} = T(bitcast(T2, x))::T +Base.cconvert(::Type{T}, x::Cenum{T2}) where {T<:Integer,T2<:Integer} = T(x) +Base.write(io::IO, x::Cenum{T}) where {T<:Integer} = write(io, T(x)) +Base.read(io::IO, ::Type{T}) where {T<:Cenum} = T(read(io, basetype(T))) -Base.write(io::IO, x::Cenum) = write(io, Int32(x)) -Base.read(io::IO, ::Type{T}) where {T<:Cenum} = T(read(io, Int32)) +Base.isless(x::T, y::T) where {T<:Cenum} = isless(basetype(T)(x), basetype(T)(y)) -enum_values(::T) where {T<:Cenum} = enum_values(T) -enum_names(::T) where {T<:Cenum} = enum_names(T) +Base.Symbol(x::Cenum)::Symbol = get(namemap(typeof(x)), Integer(x), :UnknownMember) -is_member(::Type{T}, x::Integer) where {T<:Cenum} = is_member(T, enum_values(T), x) +Base.print(io::IO, x::Cenum) = print(io, Symbol(x)) -@inline is_member(::Type{T}, r::UnitRange, x::Integer) where {T<:Cenum} = x in r -@inline function is_member(::Type{T}, values::Tuple, x::Integer) where {T<:Cenum} - lo, hi = typemin(T), typemax(T) - xhi && return false - for val in values - val == x && return true - val > x && return false # is sorted +function Base.show(io::IO, x::Cenum) + sym = Symbol(x) + if !get(io, :compact, false) + from = get(io, :module, Main) + def = typeof(x).name.module + if from === nothing || !Base.isvisible(sym, def, from) + show(io, def) + print(io, ".") + end end - return false + print(io, sym) end -function enum_name(x::T) where {T<:Cenum} - index = something(findfirst(isequal(x), enum_values(T)), 0) - if index != 0 - return enum_names(T)[index] - end - error("Invalid enum: $(Int(x)), name not found") +function Base.show(io::IO, ::MIME"text/plain", x::Cenum) + print(io, x, "::") + show(IOContext(io, :compact => true), typeof(x)) + print(io, " = ") + show(io, Integer(x)) end -Base.show(io::IO, x::Cenum) = print(io, enum_name(x), "($(Int(x)))") - -function islinear(array) - isempty(array) && return false # false, really? it's kinda undefined? - lastval = first(array) - for val in Iterators.rest(array, 2) - val-lastval == 1 || return false +function Base.show(io::IO, ::MIME"text/plain", t::Type{<:Cenum}) + print(io, "Cenum ") + Base.show_datatype(io, t) + print(io, ":") + for (s, i) in name_value_pairs(t) + print(io, "\n", Symbol(s), " = ") + show(io, Integer(i)) end - return true end +# give Cenum types scalar behavior in broadcasting +Base.broadcastable(x::Cenum) = Ref(x) + +@noinline enum_argument_error(typename, x) = throw(ArgumentError(string("input value out of range for Cenum $(typename): $x"))) -macro cenum(name, args...) - if Meta.isexpr(name, :curly) - typename, type = name.args - typename = esc(typename) - typesize = 8*sizeof(getfield(Base, type)) - typedef_expr = :(primitive type $typename <: CEnum.Cenum{$type} $typesize end) - elseif isa(name, Symbol) - # default to UInt32 - typename = esc(name) - type = UInt32 - typedef_expr = :(primitive type $typename <: CEnum.Cenum{UInt32} 32 end) - else - error("Name must be symbol or Name{Type}. Found: $name") +macro cenum(T, syms...) + if isempty(syms) + throw(ArgumentError("no arguments given for Cenum $T")) end - lastval = -1 - name_values = map([args...]) do arg - if isa(arg, Symbol) - lastval += 1 - val = lastval - sym = arg - elseif arg.head == :(=) || arg.head == :kw - sym,val = arg.args - else - error("Expression of type $arg not supported. Try only symbol or name = value") + basetype = Int32 + typename = T + if isa(T, Expr) && T.head == :(::) && length(T.args) == 2 && isa(T.args[1], Symbol) + typename = T.args[1] + basetype = Core.eval(__module__, T.args[2]) + if !isa(basetype, DataType) || !(basetype <: Integer) || !isbitstype(basetype) + throw(ArgumentError("invalid base type for Cenum $typename, $T=::$basetype; base type must be an integer primitive type")) end - (sym, val) + elseif !isa(T, Symbol) + throw(ArgumentError("invalid type expression for Cenum $T")) end - sort!(name_values, by=last) # sort for values - values = map(last, name_values) - - if islinear(values) # optimize for linear values - values = :($(first(values)):$(last(values))) - else - values = :(tuple($(values...))) + seen = Set{Symbol}() + name_values = Tuple{Symbol,basetype}[] + namemap = Dict{basetype,Symbol}() + lo = hi = 0 + i = zero(basetype) + + if length(syms) == 1 && syms[1] isa Expr && syms[1].head == :block + syms = syms[1].args end - value_block = Expr(:block) - - for (ename, value) in name_values - push!(value_block.args, :(const $(esc(ename)) = $typename($value))) + for s in syms + s isa LineNumberNode && continue + if isa(s, Symbol) + if i == typemin(basetype) && !isempty(name_values) + throw(ArgumentError("overflow in value \"$s\" of Cenum $typename")) + end + elseif isa(s, Expr) && + (s.head == :(=) || s.head == :kw) && + length(s.args) == 2 && isa(s.args[1], Symbol) + i = Core.eval(__module__, s.args[2]) # allow exprs, e.g. uint128"1" + if !isa(i, Integer) + throw(ArgumentError("invalid value for Cenum $typename, $s; values must be integers")) + end + i = convert(basetype, i) + s = s.args[1] + else + throw(ArgumentError(string("invalid argument for Cenum ", typename, ": ", s))) + end + if !Base.isidentifier(s) + throw(ArgumentError("invalid name for Cenum $typename; \"$s\" is not a valid identifier")) + end + haskey(namemap, i) || (namemap[i] = s;) + if s in seen + throw(ArgumentError("name \"$s\" in Cenum $typename is not unique")) + end + push!(seen, s) + push!(name_values, (s,i)) + if length(name_values) == 1 + lo = hi = i + else + lo = min(lo, i) + hi = max(hi, i) + end + i += oneunit(i) end - - expr = quote - $typedef_expr - function Base.convert(::Type{$typename}, x::Integer) - is_member($typename, x) || Base.Enums.enum_argument_error($(Expr(:quote, name)), x) - Base.bitcast($typename, convert($type, x)) + blk = quote + # enum definition + Base.@__doc__(primitive type $(esc(typename)) <: Cenum{$(basetype)} $(sizeof(basetype) * 8) end) + function $(esc(typename))(x::Integer) + x ≤ typemax(x) || enum_argument_error($(Expr(:quote, typename)), x) + return bitcast($(esc(typename)), convert($(basetype), x)) + end + CEnum.namemap(::Type{$(esc(typename))}) = $(esc(namemap)) + CEnum.name_value_pairs(::Type{$(esc(typename))}) = $(esc(name_values)) + Base.typemin(x::Type{$(esc(typename))}) = $(esc(typename))($lo) + Base.typemax(x::Type{$(esc(typename))}) = $(esc(typename))($hi) + let insts = (Any[ $(esc(typename))(v[2]) for v in $name_values ]...,) + Base.instances(::Type{$(esc(typename))}) = insts + end + end + if isa(typename, Symbol) + for (sym, i) in name_values + push!(blk.args, :(const $(esc(sym)) = $(esc(typename))($i))) end - CEnum.enum_names(::Type{$typename}) = tuple($(map(x-> Expr(:quote, first(x)), name_values)...)) - CEnum.enum_values(::Type{$typename}) = $values - $value_block end - expr + push!(blk.args, :nothing) + blk.head = :toplevel + return blk end -export @cenum + +include("operators.jl") end # module diff --git a/src/LibVulkan.jl b/src/LibVulkan.jl index dafbffe..fe38586 100644 --- a/src/LibVulkan.jl +++ b/src/LibVulkan.jl @@ -1,11 +1,14 @@ module LibVulkan +include("CEnum.jl") +using .CEnum + import Libdl @static if !isempty(get(ENV, "JULIA_VULKAN_LIBNAME", "")) const libvulkan = ENV["JULIA_VULKAN_LIBNAME"] elseif Sys.iswindows() - const libvulkan = "vulkan-1.dll" + const libvulkan = "vulkan-1.dll" elseif Sys.isapple() const libvulkan = "libvulkan.dylib" elseif Sys.islinux() @@ -27,81 +30,52 @@ function __init__() libvulkan_handle[] = Libdl.dlopen(libname) end -include("CEnum.jl") -using .CEnum - -const Ctm = Base.Libc.TmStruct -const Ctime_t = UInt -const Cclock_t = UInt - -export Ctm, Ctime_t, Cclock_t - -#### External definitions - -# X11/X.h -const Window = UInt32 # unsigned long -const VisualID = UInt32 # unsigned long -# X11/Xlib.h -const Display = Cvoid # Opaque struct -# X11/Xrandr.h -const RROutput = UInt32 -# xcb.h -const xcb_connection_t = Cvoid # opaque struct -const xcb_window_t = UInt32 -const xcb_visualid_t = UInt32 -# Wayland -const wl_display = Cvoid # TODO: make opaque for now -const wl_surface = Cvoid # TODO: make opaque for now -# Mir -const MirConnection = Cvoid # TODO: make opaque for now -const MirSurface = Cvoid # TODO: make opaque for now -# Android -const ANativeWindow = Cvoid # TODO: make opaque for now -# Windows -const HINSTANCE = Ptr{Cvoid} -const HWND = Ptr{Cvoid} -const HMONITOR = Ptr{Cvoid} -const HANDLE = HMONITOR -const DWORD = UInt32 -const LPCWSTR = UInt16 -const SECURITY_ATTRIBUTES = Cvoid # opaque struct -# DirectFB -const IDirectFB = Cvoid # opaque struct -const IDirectFBSurface = Cvoid # opaque struct -# Zircon -const zx_handle_t = UInt32 -# GGP C -const GgpStreamDescriptor = UInt32 -const GgpFrameToken = UInt32 -# QNX -const _screen_context = Ptr{Cvoid} -const _screen_window = Ptr{Cvoid} - -# TODO: Clang.jl should support this kinda macros -VK_MAKE_VERSION(major, minor, patch) = ( Cuint(major) << 22 ) | ( Cuint(minor) << 12 ) | patch -VK_MAKE_VIDEO_STD_VERSION(major, minor, patch) = VK_MAKE_VERSION(major, minor, patch) +VK_MAKE_VERSION(major, minor, patch) = (Cuint(major) << 22) | (Cuint(minor) << 12) | patch +VK_MAKE_API_VERSION(variant, major, minor, patch) = (Cuint(variant) << 29) | (Cuint(major) << 22) | (Cuint(minor) << 12) | Cuint(patch) VK_VERSION_MAJOR(version) = Cuint(version) >> 22 VK_VERSION_MINOR(version) = (Cuint(version) >> 12) & 0x3ff VK_VERSION_PATCH(version) = Cuint(version) & 0xfff -const VK_API_VERSION_1_0 = VK_MAKE_VERSION(1, 0, 0) -const VK_API_VERSION_1_1 = VK_MAKE_VERSION(1, 1, 0) -const VK_API_VERSION_1_2 = VK_MAKE_VERSION(1, 2, 0) - -const VK_STD_VULKAN_VIDEO_CODEC_H264_API_VERSION_0_9 = VK_MAKE_VIDEO_STD_VERSION(0, 9, 0) -const VK_STD_VULKAN_VIDEO_CODEC_H265_API_VERSION_0_5 = VK_MAKE_VIDEO_STD_VERSION(0, 5, 0) - -include(joinpath(@__DIR__, "..", "gen", "vk_common.jl")) -include(joinpath(@__DIR__, "..", "gen", "vk_api.jl")) - -const VK_HEADER_VERSION_COMPLETE = VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) +const IS_LIBC_MUSL = occursin("musl", Base.BUILD_TRIPLET) +if Sys.isapple() && Sys.ARCH === :aarch64 + include("../lib/aarch64-apple-darwin20.jl") +elseif Sys.islinux() && Sys.ARCH === :aarch64 && !IS_LIBC_MUSL + include("../lib/aarch64-linux-gnu.jl") +elseif Sys.islinux() && Sys.ARCH === :aarch64 && IS_LIBC_MUSL + include("../lib/aarch64-linux-musl.jl") +elseif Sys.islinux() && startswith(string(Sys.ARCH), "arm") && !IS_LIBC_MUSL + include("../lib/armv7l-linux-gnueabihf.jl") +elseif Sys.islinux() && startswith(string(Sys.ARCH), "arm") && IS_LIBC_MUSL + include("../lib/armv7l-linux-musleabihf.jl") +elseif Sys.islinux() && Sys.ARCH === :i686 && !IS_LIBC_MUSL + include("../lib/i686-linux-gnu.jl") +elseif Sys.islinux() && Sys.ARCH === :i686 && IS_LIBC_MUSL + include("../lib/i686-linux-musl.jl") +elseif Sys.iswindows() && Sys.ARCH === :i686 + include("../lib/i686-w64-mingw32.jl") +elseif Sys.islinux() && Sys.ARCH === :powerpc64le + include("../lib/powerpc64le-linux-gnu.jl") +elseif Sys.isapple() && Sys.ARCH === :x86_64 + include("../lib/x86_64-apple-darwin14.jl") +elseif Sys.islinux() && Sys.ARCH === :x86_64 && !IS_LIBC_MUSL + include("../lib/x86_64-linux-gnu.jl") +elseif Sys.islinux() && Sys.ARCH === :x86_64 && IS_LIBC_MUSL + include("../lib/x86_64-linux-musl.jl") +elseif Sys.isbsd() && !Sys.isapple() + include("../lib/x86_64-unknown-freebsd11.1.jl") +elseif Sys.iswindows() && Sys.ARCH === :x86_64 + include("../lib/x86_64-w64-mingw32.jl") +else + error("Unknown platform: $(Base.BUILD_TRIPLET)") +end -# export everything -foreach(names(@__MODULE__, all=true)) do s - if startswith(string(s), "VK_") || startswith(string(s), "Vk") || startswith(string(s), "vk") || startswith(string(s), "StdVideo") - @eval export $s - end +# exports +const PREFIXES = ["VK_", "Vk", "vk"] +for name in names(@__MODULE__; all=true), prefix in PREFIXES + if startswith(string(name), prefix) + @eval export $name + end end end # module diff --git a/src/operators.jl b/src/operators.jl new file mode 100644 index 0000000..9496fd6 --- /dev/null +++ b/src/operators.jl @@ -0,0 +1,24 @@ +import Base: +, -, *, &, |, xor, ==, ~ + +for op in (:+, :-, :&, :|, :xor, :(==)) + @eval begin + function ($op)(a::Cenum{T}, b::Cenum{S}) where {T<:Integer,S<:Integer} + N = promote_type(T, S) + ($op)(N(a), N(b)) + end + function ($op)(a::Cenum{T}, b::S) where {T<:Integer,S<:Integer} + N = promote_type(T, S) + ($op)(N(a), N(b)) + end + function ($op)(a::T, b::Cenum{S}) where {T<:Integer,S<:Integer} + N = promote_type(T, S) + ($op)(N(a), N(b)) + end + end +end + +function ~(a::Cenum{T}) where {T<:Integer} + ~(T(a)) +end + +Base.convert(::Type{T1}, x::Cenum{T2}) where {T1<:Integer,T2<:Integer} = convert(T1, T2(x)) diff --git a/test/vkhelper.jl b/test/vkhelper.jl index 54c27b3..ce18b19 100644 --- a/test/vkhelper.jl +++ b/test/vkhelper.jl @@ -12,7 +12,7 @@ unsafe_strings2pp(names::Vector{String}) = Base.unsafe_convert(Ptr{Cstring}, Bas to_string(x::NTuple{N,UInt8}) -> String Convert a `NTuple{N,UInt8}` to `String` dropping all of the `\0`s. """ -to_string(x::NTuple{N,UInt8}) where {N} = rstrip(String(collect(x)), '\0') +to_string(x::NTuple{N,Int8}) where {N} = rstrip(String(UInt8.(collect(x))), '\0') """ int2version(::Type{VersionNumber}, ver::Integer) -> VersionNumber @@ -20,7 +20,7 @@ Convert a Vulkan version integer to a `major.minor.patch` `VersionNumber`. """ int2version(v::Integer) = VersionNumber(VK_VERSION_MAJOR(v), VK_VERSION_MINOR(v), VK_VERSION_PATCH(v)) -# extension & layer checking +# extension & layer checking struct ExtensionProperties name::String version::VersionNumber @@ -159,12 +159,12 @@ function LibVulkan.VkDebugUtilsMessengerCreateInfoEXT(messageSeverity, messageTy end function LibVulkan.VkDebugUtilsMessengerCreateInfoEXT(pfnUserCallback, pUserData) - messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | - VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT | - VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | + messageSeverity = VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT - messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | - VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | + messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT | + VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT return VkDebugUtilsMessengerCreateInfoEXT(messageSeverity, messageType, pfnUserCallback, pUserData) end @@ -255,4 +255,4 @@ function LibVulkan.VkDeviceCreateInfo(queue_count::Integer, queue_info::Ref{VkDe return VkDeviceCreateInfo(sType, pNext, flags, queueCreateInfoCount, pQueueCreateInfos, 0, C_NULL, 0, C_NULL, pEnabledFeatures) end -LibVulkan.VkPhysicalDeviceFeatures() = VkPhysicalDeviceFeatures(fill(VK_FALSE,55)...) \ No newline at end of file +LibVulkan.VkPhysicalDeviceFeatures() = VkPhysicalDeviceFeatures(fill(VK_FALSE,55)...)